Package repositories for APT-based and YUM-based distros can be managed with these states. Here is some example SLS:
base:
pkgrepo.managed:
- humanname: CentOS-$releasever - Base
- mirrorlist: http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
- comments:
- '#http://mirror.centos.org/centos/$releasever/os/$basearch/'
- gpgcheck: 1
- gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
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
pkg.latest:
- name: logstash
- refresh: True
base:
pkgrepo.managed:
- ppa: wolfnet/logstash
pkg.latest:
- name: logstash
- refresh: True
Note
On Ubuntu systems, the python-software-properties
package should be
installed for better support of PPA repositories. To check if this package
is installed, run dpkg -l python-software-properties
.
Also, some Ubuntu releases have a bug in their
python-software-properties
package, a missing dependency on pycurl, so
python-pycurl
will need to be manually installed if it is not present
once python-software-properties
is installed.
On Ubuntu & Debian systems, the `python-apt
package is required to be installed.
To check if this package is installed, run dpkg -l python-software-properties
.
python-apt
will need to be manually installed if it is not present.
salt.states.pkgrepo.
absent
(name, **kwargs)¶This function deletes the specified repo on the system, if it exists. It is essentially a wrapper around pkg.del_repo.
UBUNTU-SPECIFIC OPTIONS
On Ubuntu, you can take advantage of Personal Package Archives on Launchpad simply by specifying the user and archive name.
logstash-ppa:
pkgrepo.absent:
- ppa: wolfnet/logstash
For Ubuntu PPAs there can be private PPAs that require authentication
to access. For these PPAs the username/password can be specified. This
is required for matching if the name format uses the ppa:
specifier
and is private (requires username/password to access, which is encoded
in the URI).
logstash-ppa:
pkgrepo.absent:
- ppa: wolfnet/logstash
- ppa_auth: username:password
If set to True
, the GPG key's ID will be looked up from
ppa.launchpad.net and removed, and the keyid
argument will be
ignored.
Note
This option will be disregarded unless the ppa
argument is
present.
salt.states.pkgrepo.
managed
(name, **kwargs)¶This function manages the configuration on a system that points to the repositories for the system's package manager.
For yum-based systems, take note of the following configuration values:
Additional configuration values, such as gpgkey or gpgcheck, are used verbatim to update the options for the yum repo in question.
For apt-based systems, take note of the following configuration values:
On Ubuntu, you can take advantage of Personal Package Archives on Launchpad simply by specifying the user and archive name. The keyid will be queried from launchpad and everything else is set automatically. You can override any of the below settings by simply setting them as you would normally. For example:
logstash-ppa:
pkgrepo.managed:
- ppa: wolfnet/logstash
For Ubuntu PPAs there can be private PPAs that require authentication to access. For these PPAs the username/password can be passed as an HTTP Basic style username/password combination.
logstash-ppa:
pkgrepo.managed:
- ppa: wolfnet/logstash
- ppa_auth: username:password
On apt-based systems this must be the complete entry as it would be seen in the sources.list file. This can have a limited subset of components (i.e. 'main') which can be added/modified with the "comps" option.
precise-repo:
pkgrepo.managed:
- name: deb http://us.archive.ubuntu.com/ubuntu precise main
keyserver
option to be set.