package

Description

Manage packages. There is a basic dichotomy in package
support right now: Some package types (such as yum and apt) can
retrieve their own package files, while others (such as rpm and sun)
cannot. For those package formats that cannot retrieve their own files,
you can use the source parameter to point to the correct file.

Puppet will automatically guess the packaging format that you are
using based on the platform you are on, but you can override it
using the provider parameter; each provider defines what it
requires in order to function, and you must meet those requirements
to use a given provider.

You can declare multiple package resources with the same name, as long
as they specify different providers and have unique titles.

Note that you must use the title to make a reference to a package
resource; Package[<NAME>] is not a synonym for Package[<TITLE>] like
it is for many other resource types.

Autorequires: If Puppet is managing the files specified as a
package’s adminfile, responsefile, or source, the package
resource will autorequire those files.

Attributes

package { 'resource title':
name => # (namevar) The package name. This is the name that the...provider => # (namevar) The specific backend to use for this `package...ensure => # What state the package should be in. On...adminfile => # A file containing package defaults for...allow_virtual => # Specifies if virtual package names are allowed...allowcdrom => # Tells apt to allow cdrom sources in the...category => # A read-only parameter set by the...configfiles => # Whether to keep or replace modified config files description => # A read-only parameter set by the...flavor => # OpenBSD supports 'flavors', which are further...install_options => # An array of additional options to pass when...instance => # A read-only parameter set by the...package_settings => # Settings that can change the contents or...platform => # A read-only parameter set by the...reinstall_on_refresh => # Whether this resource should respond to refresh...responsefile => # A file containing any necessary answers to...root => # A read-only parameter set by the...source => # Where to find the package file. This is only...status => # A read-only parameter set by the...uninstall_options => # An array of additional options to pass when...vendor => # A read-only parameter set by the...
# ...plus any applicable metaparameters.
}

name

(Namevar: If omitted, this attribute’s value defaults to the resource’s title.)

The package name. This is the name that the packaging
system uses internally, which is sometimes (especially on Solaris)
a name that is basically useless to humans. If a package goes by
several names, you can use a single title and then set the name
conditionally:

ensure

(Property: This attribute represents concrete state on the target system.)

What state the package should be in. On packaging systems that can
retrieve new packages on their own, you can choose which package to
retrieve by specifying a version number or latest as the ensure
value. On packaging systems that manage configuration files separately
from “normal” system files, you can uninstall config files by
specifying purged as the ensure value. This defaults to installed.

Version numbers must match the full version to install, including
release if the provider uses a release moniker. Ranges or semver
patterns are not accepted except for the gem package provider. For
example, to install the bash package from the rpm
bash-4.1.2-29.el6.x86_64.rpm, use the string '4.1.2-29.el6'.

adminfile

A file containing package defaults for installing packages.

This attribute is only used on Solaris. Its value should be a path to a
local file stored on the target system. Solaris’s package tools expect
either an absolute file path or a relative path to a file in
/var/sadm/install/admin.

The value of adminfile will be passed directly to the pkgadd or
pkgrm command with the -a <ADMINFILE> option.

Each option in the array can either be a string or a hash, where each
key and value pair are interpreted in a provider specific way. Each
option will automatically be quoted when passed to the install command.

With Windows packages, note that file paths in an install option must
use backslashes. (Since install options are passed directly to the
installation command, forward slashes won’t be automatically converted
like they are in file resources.) Note also that backslashes in
double-quoted strings must be escaped and backslashes in single-quoted
strings can be escaped.

instance

package_settings

(Property: This attribute represents concrete state on the target system.)

Settings that can change the contents or configuration of a package.

The formatting and effects of package_settings are provider-specific; any
provider that implements them must explain how to use them in its
documentation. (Our general expectation is that if a package is
installed but its settings are out of sync, the provider should
re-install that package with the desired settings.)

An example of how package_settings could be used is FreeBSD’s port build
options — a future version of the provider could accept a hash of options,
and would reinstall the port if the installed version lacked the correct
settings.

package { 'www/apache22':
package_settings => { 'SUEXEC' => false }
}

Again, check the documentation of your platform’s package provider to see
the actual usage.

responsefile

A file containing any necessary answers to questions asked by
the package. This is currently used on Solaris and Debian. The
value will be validated according to system rules, but it should
generally be a fully qualified path.

root

source

Where to find the package file. This is only used by providers that don’t
automatically download packages from a central repository. (For example:
the yum and apt providers ignore this attribute, but the rpm and
dpkg providers require it.)

Different providers accept different values for source. Most providers
accept paths to local files stored on the target system. Some providers
may also accept URLs or network drive paths. Puppet will not
automatically retrieve source files for you, and usually just passes the
value of source to the package installation command.

You can use a file resource if you need to manually copy package files
to the target system.

Each option in the array can either be a string or a hash, where each
key and value pair are interpreted in a provider specific way. Each
option will automatically be quoted when passed to the uninstall
command.

On Windows, this is the only place in Puppet where backslash
separators should be used. Note that backslashes in double-quoted
strings must be double-escaped and backslashes in single-quoted
strings may be double-escaped.

vendor

Providers

aix

Installation from an AIX software directory, using the AIX installp
command. The source parameter is required for this provider, and should
be set to the absolute path (on the puppet agent machine) of a directory
containing one or more BFF package files.

The installp command will generate a table of contents file (named .toc)
in this directory, and the name parameter (or resource title) that you
specify for your package resource must match a package name that exists
in the .toc file.

Note that package downgrades are not supported; if your resource specifies
a specific version number and there is already a newer version of the package
installed on the machine, the resource will fail with an error message.

apple

Package management based on OS X’s built-in packaging system. This is
essentially the simplest and least functional package system in existence –
it only supports installation; no deletion or upgrades. The provider will
automatically add the .pkg extension, so leave that off when specifying
the package name.

Required binaries: /usr/sbin/installer

Confined to: operatingsystem == darwin

Supported features: installable

apt

Package management via apt-get.

This provider supports the install_options attribute, which allows command-line flags to be passed to apt-get.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

blastwave

dnf

Support via dnf.

Using this provider’s uninstallable feature will not remove dependent packages. To
remove dependent packages with this provider use the purgeable feature, but note this
feature is destructive and should be used with the utmost care.

This provider supports the install_options attribute, which allows command-line flags to be passed to dnf.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

freebsd

The specific form of package management on FreeBSD. This is an
extremely quirky packaging system, in that it freely mixes between
ports and packages. Apparently all of the tools are written in Ruby,
so there are plans to rewrite this support to directly use those
libraries.

gem

Ruby Gem support. If a URL is passed via source, then that URL is
appended to the list of remote gem repositories; to ensure that only the
specified source is used, also pass --clear-sources via install_options.
If source is present but is not a valid URL, it will be interpreted as the
path to a local gem file. If source is not present, the gem will be
installed from the default gem repositories. Note that to modify this for Windows, it has to be a valid URL.

This provider supports the install_options and uninstall_options attributes,
which allow command-line flags to be passed to the gem command.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

nim

Installation from an AIX NIM LPP source. The source parameter is required
for this provider, and should specify the name of a NIM lpp_source resource
that is visible to the puppet agent machine. This provider supports the
management of both BFF/installp and RPM packages.

Note that package downgrades are not supported; if your resource specifies
a specific version number and there is already a newer version of the package
installed on the machine, the resource will fail with an error message.

openbsd

OpenBSD’s form of pkg_add support.

This provider supports the install_options and uninstall_options
attributes, which allow command-line flags to be passed to pkg_add and pkg_delete.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

pacman

Support for the Package Manager Utility (pacman) used in Archlinux.

This provider supports the install_options attribute, which allows command-line flags to be passed to pacman.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

pip

Python packages via pip.

This provider supports the install_options attribute, which allows command-line flags to be passed to pip.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

pip3

Python packages via pip3.

This provider supports the install_options attribute, which allows command-line flags to be passed to pip3.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

pkgdmg

Package management based on Apple’s Installer.app and DiskUtility.app.

This provider works by checking the contents of a DMG image for Apple pkg or
mpkg files. Any number of pkg or mpkg files may exist in the root directory
of the DMG file system, and Puppet will install all of them. Subdirectories
are not checked for packages.

This provider can also accept plain .pkg (but not .mpkg) files in addition
to .dmg files.

Notes:

The source attribute is mandatory. It must be either a local disk path
or an HTTP, HTTPS, or FTP URL to the package.

The name of the resource must be the filename (without path) of the DMG file.

When installing the packages from a DMG, this provider writes a file to
disk at /var/db/.puppet_pkgdmg_installed_NAME. If that file is present,
Puppet assumes all packages from that DMG are already installed.

This provider is not versionable and uses DMG filenames to determine
whether a package has been installed. Thus, to install new a version of a
package, you must create a new DMG with a different filename.

pkgutil

portage

Provides packaging support for Gentoo’s portage system.

This provider supports the install_options and uninstall_options attributes, which allows command-line
flags to be passed to emerge. These options should be specified as a string (e.g. ‘–flag’), a hash
(e.g. {‘–flag’ => ‘value’}), or an array where each element is either a string or a hash.

rpm

RPM packaging support; should work anywhere with a working rpm
binary.

This provider supports the install_options and uninstall_options
attributes, which allow command-line flags to be passed to rpm.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

rug

sun

Sun’s packaging system. Requires that you specify the source for
the packages you’re managing.

This provider supports the install_options attribute, which allows command-line flags to be passed to pkgadd.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

sunfreeware

Package management using sunfreeware.com’s pkg-get command on Solaris.
At this point, support is exactly the same as blastwave support and
has not actually been tested.

Required binaries: pkg-get

Confined to: osfamily == solaris

Supported features: installable, uninstallable, upgradeable

tdnf

Support via tdnf.

This provider supports the install_options attribute, which allows command-line flags to be passed to tdnf.
These options should be spcified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}), or an
array where each element is either a string or a hash.

windows

This provider supports either MSI or self-extracting executable installers.

This provider requires a source attribute when installing the package.
It accepts paths to local files, mapped drives, or UNC paths.

This provider supports the install_options and uninstall_options
attributes, which allow command-line flags to be passed to the installer.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

If the executable requires special arguments to perform a silent install or
uninstall, then the appropriate arguments should be specified using the
install_options or uninstall_options attributes, respectively. Puppet
will automatically quote any option that contains spaces.

yum

Support via yum.

Using this provider’s uninstallable feature will not remove dependent packages. To
remove dependent packages with this provider use the purgeable feature, but note this
feature is destructive and should be used with the utmost care.

This provider supports the install_options attribute, which allows command-line flags to be passed to yum.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

zypper

Support for SuSE zypper package manager. Found in SLES10sp2+ and SLES11.

This provider supports the install_options attribute, which allows command-line flags to be passed to zypper.
These options should be specified as a string (e.g. ‘–flag’), a hash (e.g. {‘–flag’ => ‘value’}),
or an array where each element is either a string or a hash.

Provider Features

Available features:

holdable — The provider is capable of placing packages on hold such that they are not automatically upgraded as a result of other package dependencies unless explicit action is taken by a user or another package. Held is considered a superset of installed.

install_options — The provider accepts options to be passed to the installer command.

installable — The provider can install packages.

package_settings — The provider accepts package_settings to be ensured for the given package. The meaning and format of these settings is provider-specific.

purgeable — The provider can purge packages. This generally means that all traces of the package are removed, including existing configuration files. This feature is thus destructive and should be used with the utmost care.

reinstallable — The provider can reinstall packages.

uninstall_options — The provider accepts options to be passed to the uninstaller command.

uninstallable — The provider can uninstall packages.

upgradeable — The provider can upgrade to the latest version of a package. This feature is used by specifying latest as the desired value for the package.

versionable — The provider is capable of interrogating the package database for installed version(s), and can select which out of a set of available versions of a package to install if asked.