Salt can manage software packages via the pkg state module, packages can be set up to be installed, latest, removed and purged. Package management declarations are typically rather simple:
vim:
pkg.installed
A more involved example involves pulling from a custom repository. Note that the pkgrepo has a require_in clause. This is necessary and can not be replaced by a require clause in the pkg.
base:
pkgrepo.managed:
- humanname: Logstash PPA
- name: deb http://ppa.launchpad.net/wolfnet/logstash/ubuntu precise main
- dist: precise
- file: /etc/apt/sources.list.d/logstash.list
- keyid: 28B04E4A
- keyserver: keyserver.ubuntu.com
- require_in:
- pkg: logstash
logstash:
pkg.installed
salt.states.pkg.installed(name, version=None, refresh=None, fromrepo=None, skip_verify=False, skip_suggestions=False, pkgs=None, sources=None, **kwargs)¶Verify that the package is installed, and that it is the correct version (if specified).
Force strict package naming. Disables lookup of package alternatives.
New in version 2014.1.1.
apt,
ebuild,
pacman,
yumpkg, and
zypper.Usage:
httpd:
pkg.installed:
- fromrepo: mycustomrepo
- skip_verify: True
- skip_suggestions: True
- version: 2.0.6~ubuntu3
- refresh: True
Multiple Package Installation Options: (not supported in Windows or pkgng)
Usage:
mypkgs:
pkg.installed:
- pkgs:
- foo
- bar
- baz
NOTE: For apt,
ebuild,
pacman, yumpkg,
and zypper, version numbers can be specified
in the pkgs argument. Example:
mypkgs:
pkg.installed:
- pkgs:
- foo
- bar: 1.2.3-4
- baz
Additionally, ebuild,
pacman and
zypper support the <, <=, >=, and
> operators for more control over what versions will be installed.
Example:
mypkgs:
pkg.installed:
- pkgs:
- foo
- bar: '>=1.2.3-4'
- baz
NOTE: When using comparison operators, the expression must be enclosed
in quotes to avoid a YAML render error.
With ebuild is also possible to specify a use
flag list and/or if the given packages should be in package.accept_keywords
file and/or the overlay from which you want the package to be installed.
Example:
mypkgs:
pkg.installed:
- pkgs:
- foo: '~'
- bar: '~>=1.2:slot::overlay[use,-otheruse]'
- baz
foo,
bar, baz, etc. refer to the name of the package, as it would
appear in the output of the pkg.version or pkg.list_pkgs salt
CLI commands.Usage:
mypkgs:
pkg.installed:
- sources:
- foo: salt://rpms/foo.rpm
- bar: http://somesite.org/bar.rpm
- baz: ftp://someothersite.org/baz.rpm
- qux: /minion/path/to/qux.rpm
salt.states.pkg.latest(name, refresh=None, fromrepo=None, skip_verify=False, pkgs=None, **kwargs)¶Verify that the named package is installed and the latest available
package. If the package can be updated this state function will update
the package. Generally it is better for the
installed function to be
used, as latest will update the package
whenever a new package is available.
Multiple Package Installation Options:
(Not yet supported for: Windows, FreeBSD, OpenBSD, MacOS, and Solaris pkgutil)
Usage:
mypkgs:
pkg.latest:
- pkgs:
- foo
- bar
- baz
salt.states.pkg.purged(name, pkgs=None, **kwargs)¶Verify that a package is not installed, calling pkg.purge if necessary
to purge the package.
Multiple Package Options:
name parameter will be ignored if this option is passed.New in version 0.16.0.
salt.states.pkg.removed(name, pkgs=None, **kwargs)¶Verify that a package is not installed, calling pkg.remove if necessary
to remove the package.
Multiple Package Options:
name parameter will be ignored if this option is passed.New in version 0.16.0.
Current Salt release: 2014.1.7
Docs for previous releases on salt.rtfd.org.