gem_package resource
This page is generated from the Chef source code.To suggest a change, edit the gem_package.rb file and submit a pull request to the Chef repository.
Use the gem_package resource to manage gem packages that are only included in recipes. When a gem is installed from a local file, it must be added to the node using the remote_file or cookbook_file resources.
Note
The gem_package resource must be specified as gem_package
and cannot be shortened to package
in a recipe.
Warning
The chef_gem and gem_package resources are both used to install Ruby gems. For any machine on which Chef Infra Client is installed, there are two instances of Ruby. One is the standard, system-wide instance of Ruby and the other is a dedicated instance that is available only to Chef Infra Client. Use the chef_gem resource to install gems into the instance of Ruby that is dedicated to Chef Infra Client. Use the gem_package resource to install all other gems (i.e. install gems system-wide).
Syntax
The full syntax for all of the properties that are available to the gem_package resource is:
gem_package 'name' do
clear_sources true, false
gem_binary String
include_default_source true, false
options String, Hash, Array
package_name String
source String, Array
timeout String, Integer
version String
action Symbol # defaults to :install if not specified
end
where:
gem_package
is the resource.name
is the name given to the resource block.action
identifies which steps Chef Infra Client will take to bring the node into the desired state.clear_sources
,gem_binary
,include_default_source
,options
,package_name
,source
,timeout
, andversion
are the properties available to this resource.
Actions
The gem_package resource has the following actions:
:install
- Default. Install a package. If a version is specified, install the specified version of the package.
:nothing
- This resource block does not act unless notified by another resource to take action. Once notified, this resource block either runs immediately or is queued up to run at the end of a Chef Infra Client run.
:purge
- Purge a package. This action typically removes the configuration files as well as the package.
:reconfig
- Reconfigure a package. This action requires a response file.
:remove
- Remove a package.
:upgrade
- Install a package and/or ensure that a package is the latest version.
Properties
The gem_package resource has the following properties:
clear_sources
- Ruby Type: true, false | Default Value:
false
Set to
true
to download a gem from the path specified by thesource
property (and not from RubyGems).
gem_binary
- Ruby Type: String
The path of a gem binary to use for the installation. By default, the same version of Ruby that is used by Chef Infra Client will be used.
include_default_source
- Ruby Type: true, false
Set to
false
to not includeChef::Config[:rubygems_url]
in the sources.New in Chef Client 13.0
options
- Ruby Type: String, Hash, Array
Options for the gem install, either a Hash or a String. When a hash is given, the options are passed to
Gem::DependencyInstaller.new
, and the gem will be installed via the gems API. When a String is given, the gem will be installed by shelling out to the gem command. Using a Hash of options with an explicit gem_binary will result in undefined behavior.
package_name
- Ruby Type: String
An optional property to set the package name if it differs from the resource block’s name.
source
- Ruby Type: String, Array
Optional. The URL, or list of URLs, at which the gem package is located. This list is added to the source configured in
Chef::Config[:rubygems_url]
(see also include_default_source) to construct the complete list of rubygems sources. Users in an ‘airgapped’ environment should set Chef::Config[:rubygems_url] to their local RubyGems mirror.
timeout
- Ruby Type: String, Integer
The amount of time (in seconds) to wait before timing out.
version
- Ruby Type: String
The version of a package to be installed or upgraded.
Examples
The following examples demonstrate various approaches for using the gem_package resource in recipes:
The following examples demonstrate various approaches for using the gem_package resource in recipes:
Install a gem file from the local file system
gem_package 'loofah' do
source '/tmp/loofah-2.7.0.gem'
action :install
end
Use the ignore_failure
common attribute
gem_package 'syntax' do
action :install
ignore_failure true
end