Yum Operations¶
Manage yum packages and repositories. Note that yum package names are case-sensitive.
yum.key
¶
Add yum gpg keys with rpm
.
yum.key(src)
- src: filename or URL
- Note:
- always returns one command, not state checking
Example:
linux_id = host.fact.linux_distribution['release_meta'].get('ID')
yum.key(
name='Add the Docker CentOS gpg key',
src='https://download.docker.com/linux/{}/gpg'.format(linux_id),
)
yum.packages
¶
Install/remove/update yum packages & updates.
yum.packages(
packages=None, present=True, latest=False, update=False, clean=False, nobest=False,
extra_install_args=None, extra_uninstall_args=None,
)
- packages: list of packages to ensure
- present: whether the packages should be installed
- latest: whether to upgrade packages without a specified version
- update: run
yum update
before installing packages - clean: run
yum clean all
before installing packages - nobest: add the no best option to install
- extra_install_args: additional arguments to the yum install command
- extra_uninstall_args: additional arguments to the yum uninstall command
- Versions:
- Package versions can be pinned as follows:
<pkg>=<version>
Examples:
# Update package list and install packages
yum.packages(
name='Install Vim and Vim enhanced',
packages=['vim-enhanced', 'vim'],
update=True,
)
# Install the latest versions of packages (always check)
yum.packages(
name='Install latest Vim',
packages=['vim'],
latest=True,
)
yum.repo
¶
Add/remove/update yum repositories.
yum.repo(
src, present=True, baseurl=None, description=None, enabled=True, gpgcheck=True,
gpgkey=None,
)
- src: URL or name for the
.repo
file - present: whether the
.repo
file should be present - baseurl: the baseurl of the repo (if
name
is not a URL) - description: optional verbose description
- enabled: whether this repo is enabled
- gpgcheck: whether set
gpgcheck=1
- gpgkey: the URL to the gpg key for this repo
Baseurl
/description
/gpgcheck
/gpgkey
:- These are only valid when
src
is a filename (ie not a URL). This is for manual construction of repository files. Use a URL to download and install remote repository files.
Examples:
# Download a repository file
yum.repo(
name='Install Docker-CE repo via URL',
src='https://download.docker.com/linux/centos/docker-ce.repo',
)
# Create the repository file from baseurl/etc
yum.repo(
name='Add the Docker CentOS repo',
src='DockerCE',
baseurl='https://download.docker.com/linux/centos/7/$basearch/stable',
)
yum.rpm
¶
Add/remove .rpm
file packages.
yum.rpm(src, present=True)
- src: filename or URL of the
.rpm
package - present: whether ore not the package should exist on the system
- URL sources with
present=False
: - If the
.rpm
file isn’t downloaded, pyinfra can’t remove any existing package as the file won’t exist until mid-deploy.
Example:
yum.rpm(
name='Install EPEL rpm to enable EPEL repo',
src='https://dl.fedoraproject.org/pub/epel/epel-release-latest-'
'{{ host.fact.linux_distribution.major }}.noarch.rpm',
)