Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package not found when installing RPM package on RHEL 6 #203

Closed
fletchowns opened this issue Oct 27, 2017 · 2 comments
Closed

Package not found when installing RPM package on RHEL 6 #203

fletchowns opened this issue Oct 27, 2017 · 2 comments
Assignees

Comments

@fletchowns
Copy link

fletchowns commented Oct 27, 2017

Cookbook version

2.1.10

Chef-client version

12.20.3

Platform Details

Redhat 6.5 on AWS

Scenario:

Install Chef Server via RPM from custom URL

Steps to Reproduce:

I'm using chef-ingredient via the chef-server cookbook with the following attributes set:

default["chef-server"]["version"] = "12.14.0"
default["chef-server"]["package_source"] = "https://custom.location.notarealurl.whatever/chef-server-core-12.14.0-1.el6.x86_64.rpm"
default["chef-server"]["addons"] = [
	"manage",
	"reporting"
]
default["chef-server"]["accept_license"] = true

Expected Result:

Chef Server is installed during the converge

Actual Result:

Converge fails, package chef-server-core not found

       Recipe: chef-server::default
         * ruby_block[ensure node can resolve API FQDN] action run[2017-10-27T00:50:52+00:00] INFO: Processing ruby_block[ensure node can resolve API FQDN] action run (chef-server::default line 22)
        (skipped due to not_if)
         * chef_ingredient[chef-server] action install[2017-10-27T00:50:52+00:00] INFO: Processing chef_ingredient[chef-server] action install (chef-server::default line 29)
       
         Recipe: <Dynamically Defined Resource>
           * chef_gem[mixlib-install] action install[2017-10-27T00:50:52+00:00] INFO: Processing chef_gem[mixlib-install] action install (dynamically defined)
       [2017-10-27T00:50:53+00:00] INFO: chef_gem[mixlib-install] installed mixlib-install at ~> 3.3
       
             - install version ~> 3.3 of package mixlib-install
           * ruby_block[stop chef run] action nothing[2017-10-27T00:50:53+00:00] INFO: Processing ruby_block[stop chef run] action nothing (/tmp/kitchen/cache/cookbooks/chef-ingredient/libraries/helpers.rb line 251)
        (skipped due to action :nothing)
           * yum_package[chef-server] action install[2017-10-27T00:50:53+00:00] INFO: Processing yum_package[chef-server] action install (/tmp/kitchen/cache/cookbooks/chef-ingredient/libraries/default_handler.rb line 55)
       
             * Package chef-server-core not found: https://custom.location.notarealurl.whatever/chef-server-core-12.14.0-1.el6.x86_64.rpm
             ================================================================================
             Error executing action `install` on resource 'yum_package[chef-server]'
             ================================================================================
             
             Chef::Exceptions::Package
             -------------------------
             Package chef-server-core not found: https://custom.location.notarealurl.whatever/chef-server-core-12.14.0-1.el6.x86_64.rpm
             
             Resource Declaration:
             ---------------------
             # In /tmp/kitchen/cache/cookbooks/chef-ingredient/libraries/default_handler.rb
             
       55:       package new_resource.product_name do # ~FC009
       56:         action action_name
       57:         package_name ingredient_package_name
       58:         options new_resource.options
       59:         source local_path || new_resource.package_source
       60:         timeout new_resource.timeout if new_resource.timeout
       61:         provider value_for_platform_family(
       62:           'debian'  => Chef::Provider::Package::Dpkg,
       63:           'rhel'    => node['platform_version'].to_i == 5 ? Chef::Provider::Package::Rpm : Chef::Provider::Package::Yum,
       64:           'suse'    => Chef::Provider::Package::Rpm,
       65:           'windows' => Chef::Provider::Package::Windows
       66:         )
       67:         if new_resource.product_name == 'chef'
       68:           # We define this resource in ChefIngredientProvider
       69:           notifies :run, 'ruby_block[stop chef run]', :immediately
       70:         end
       71:       end
             
             Compiled Resource:
             ------------------
             # Declared in /tmp/kitchen/cache/cookbooks/chef-ingredient/libraries/default_handler.rb:55:in `configure_from_source_package'
             
             yum_package("chef-server") do
        package_name "chef-server-core"
        provider Chef::Provider::Package::Yum
        action [:install]
        retries 0
        retry_delay 2
        default_guard_interpreter :default
        declared_type :package
        cookbook_name "chef-server"
        source "https://custom.location.notarealurl.whatever/chef-server-core-12.14.0-1.el6.x86_64.rpm"
        flush_cache {:before=>false, :after=>false}
        version "12.14.0-1.el6"
        arch "x86_64"
             end
             
             Platform:
             ---------
             x86_64-linux
             

This was working previously with chef-server cookbook 5.4.0 and chef-ingredient 1.1.0. I believe it may have been this recent change that broke it for me: aed2eae

@wrightp wrightp self-assigned this Oct 27, 2017
@fletchowns fletchowns changed the title Package not found when installing RPM package on RHEL 7 Package not found when installing RPM package on RHEL 6 Oct 27, 2017
@fletchowns
Copy link
Author

I had originally reported this as an issue on RHEL7 but that was incorrect, it was on RHEL6.

@wrightp
Copy link

wrightp commented Oct 30, 2017

When the package_source property is set the resource passes that value to a package resource's source property. That property does not support remote URLs, only local file paths.

However, it would be cool to see a PR come through that detects a remote URL, download the package, then set the source.

For now you could use remote_file to download the package. Then package_source must be set to local path for YUM (and RPM) providers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants