ansible常用模块之 -- yum模块 – 使用yum包管理器管理包

  • yum模块 – 使用yum包管理器管理包
  • 一、摘要
  • 二、参数
  • 三、示例


yum模块 – 使用yum包管理器管理包

一、摘要

  • 使用yum包管理器安装、升级、降级、删除和列出包和组
  • 此模块仅适用于Python 2。如果您需要Python 3支持,请参阅dnf模块

二、参数

参数

选项/默认值

描述

allow_downgrade

boolean

· no ←

· yes

指定是否允许指定的包和版本降级可能已经安装的该包的更高版本。注意,设置allow_downgrad=True可以使该模块以非幂等的方式运行。任务最终可能得到一组与要安装的指定包的完整列表不匹配的包(因为降级包与其他包之间的依赖关系可能导致对早期事务中的包的更改)。

autoremove

boolean

· no ←

· yes

如果 yes,则从系统中删除所有“leaf”包,这些包最初是作为用户安装包的依赖项安装的,但任何此类包不再需要这些包。是单独使用还是在没有状态的情况下使用

注意:此功能需要yum >= 3.4.3 (RHEL/CentOS 7+)

bugfix

Default:“no”

如果设置为yes,并且state=latest则只安装已标记为与bug修复相关的更新。

conf_file

用于事务的远程yum配置文件。

disable_excludes

禁用YUM配置文件中定义的排除。

如果设置为all,则禁用所有排除。

如果设置为main,则禁用yum.conf中[main]定义的排除。

如果设置为repoid,则禁用为给定repoid定义的排除。

disable_gpg_check

boolean

· no ←

· yes

是否关闭正在安装的包的GPG签名检查。只有在状态出现或最新时才会生效。

disable_plugin

为安装/更新操作禁用的插件名称。禁用的插件将不会在事务之外持久存在。

disablerepo

要为安装/更新操作禁用的存储库的repid。这些回购不会在交易结束后继续存在。当指定多个回购时,用“,”分隔它们。

在Ansible 2.7中,这也可以是一个列表而不是“,”分隔的字符串

download_dir

string

指定存储包的备用目录。

只有指定了download_only才会生效。

download_only

boolean

· no ←

· yes

只下载软件包,不安装。

enable_plugin

为安装/更新操作启用的插件名称。启用的插件不会在事务之外持久存在。

enablerepo

用于安装/更新操作的存储库的Repoid。这些回购不会在交易结束后继续存在。当指定多个回购时,用“,”分隔它们。

在Ansible 2.7中,这也可以是一个列表而不是“,”分隔的字符串

exclude

当state=present或latest时要排除的包名

install_weak_deps

boolean

· yes ←

· no

还将安装由弱依赖关系链接的所有包。

注意:这个功能需要yum >= 4 (RHEL/CentOS 8+)

installroot

Default:“/”

指定可选的installroot,所有包都将相对于该安装根进行安装。

list

运行yum list的等效包名——show-duplicate <反对除了列出包外,use还可以列出以下包:已安装的、更新的、可用的和回收的。

与name互斥。

lock_timeout

integer

Default:30

等待yum锁文件被释放的时间。

name

list / elements=string

带有版本的包名或包说明符,如name-1.0。

如果指定了以前的版本,任务还需要打开allow_降级。有关降级包的注意事项,请参阅allow_降级文档。

当使用state=latest时,它可以是’*',这意味着运行yum -y update。

您还可以向rpm文件传递url或本地路径(使用state=present)。要操作多个包,它可以接受逗号分隔的包字符串或(从2.0开始)包列表。

releasever

指定将从其中安装所有包的替代版本。

security

boolean

· no ←

· yes

如果设置为yes,并且state=latest则只安装已标记为安全相关的更新。

skip_broken

boolean

· no ←

· yes

跳过有破坏依赖项的包(devsolve),这会导致问题。

state

· absent

· installed

· latest

· present

· removed

是安装(现有的或已安装的,最新的),还是删除(缺失的或已删除的)一个包。

Present和installed只会确保所需的包被安装。

如果指定的包不是最新的可用版本,Latest将更新该包。

缺席和删除将删除指定的包。

默认值为None,但实际上默认操作是存在的,除非为该模块启用了自动删除选项,否则将推断为缺席。

update_cache

boolean

· no ←

· yes

强制yum检查缓存是否过期并在需要时重新下载。只有在状态出现或最新时才会生效。

update_only

boolean

· no ←

· yes

使用latest时,只更新已安装的包。禁止安装软件包。

只有state是最新的才有效果

use_backend

· auto ←

· yum

· yum4

· dnf

该模块支持yum(一如既往),这被上游yum开发人员称为yum3/ yum3/ yum-已弃用。从Ansible 2.7+开始,这个模块还支持YUM4,这是“新的yum”,它有一个dnf后端。

默认情况下,该模块将根据ansible_pkg_mgr事实选择后端。

validate_certs

boolean

· yes ←

· no

这只适用于使用https url作为rpm源的情况。例如localinstall。如果设置为no,则不验证SSL证书。

这应该只设置为在使用自签名证书的个人控制站点上不使用,因为它避免验证源站点。

在2.1版本之前,代码的工作方式就好像这被设置为yes。

三、示例

# 安装最新版本的Apache
- name: install the latest version of Apache
  yum:
    name: httpd
    state: latest

# 确保已安装的软件包列表
- name: ensure a list of packages installed
  yum:
    name: "{{ packages }}"
  vars:
    packages:
    - httpd
    - httpd-tools

# 删除Apache包
- name: remove the Apache package
  yum:
    name: httpd
    state: absent

# 从测试回购中安装最新版本的Apache
- name: install the latest version of Apache from the testing repo
  yum:
    name: httpd
    enablerepo: testing
    state: present

# 安装一个特定版本的Apache
- name: install one specific version of Apache
  yum:
    name: httpd-2.2.29-1.4.amzn1
    state: present

# 升级所有的包
- name: upgrade all packages
  yum:
    name: '*'
    state: latest

# 升级所有包,不包括内核和foo相关的包
- name: upgrade all packages, excluding kernel & foo related packages
  yum:
    name: '*'
    state: latest
    exclude: kernel*,foo*

# 从远程repo安装nginx RPM
- name: install the nginx rpm from a remote repo
  yum:
    name: http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present

# 从本地文件安装nginx RPM
- name: install nginx rpm from a local file
  yum:
    name: /usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present

# 安装“开发工具”包组
- name: install the 'Development tools' package group
  yum:
    name: "@Development tools"
    state: present

# 安装“Gnome桌面”环境组
- name: install the 'Gnome desktop' environment group
  yum:
    name: "@^gnome-desktop-environment"
    state: present

# 列出可安装的包并注册结果,稍后用调试打印。
- name: List ansible packages and register result to print with debug later.
  yum:
    list: ansible
  register: result

# 安装包与多个回购启用
- name: Install package with multiple repos enabled
  yum:
    name: sos
    enablerepo: "epel,ol7_latest"

# 安装包与多个回购禁用
- name: Install package with multiple repos disabled
  yum:
    name: sos
    disablerepo: "epel,ol7_latest"

# 安装软件包列表
- name: Install a list of packages
  yum:
    name:
      - nginx
      - postgresql
      - postgresql-server
    state: present

# 下载nginx包,但不要安装它
- name: Download the nginx package but do not install it
  yum:
    name:
      - nginx
    state: latest
    download_only: true

官方文档:https://docs.ansible.com/ansible/2.9/modules/yum_module.html#yum-module