目录
yum
模块是 Ansible 用于管理 Red Hat 及其衍生发行版(如 CentOS 和 Fedora)上的软件包的模块。使用 yum
模块可以方便地安装、更新、删除和管理软件包。
参数总结
name
:- 描述:要管理的软件包名称。可以指定一个包名称、包名称和版本,或一个 URL 指向的包。
- 类型:字符串或列表
- 必需:否(如果使用了
list
或state
参数)
state
:- 描述:包的目标状态。
- 可选值:
present
(确保包已安装)、absent
(确保包已移除)、latest
(确保安装最新版本)、reinstalled
(重新安装包) - 类型:字符串
- 默认值:
present
enablerepo
:- 描述:启用指定的 YUM 库。
- 类型:字符串或列表
disablerepo
:- 描述:禁用指定的 YUM 库。
- 类型:字符串或列表
exclude
:- 描述:排除安装或更新指定的包。
- 类型:字符串或列表
allow_downgrade
:- 描述:允许降级包到较低版本。
- 类型:布尔值
- 默认值:
no
update_cache
:- 描述:在执行操作前更新 YUM 缓存。
- 类型:布尔值
- 默认值:
no
validate_certs
:- 描述:使用 SSL 时验证服务端证书。
- 类型:布尔值
- 默认值:
yes
conf_file
:- 描述:指定自定义的 YUM 配置文件。
- 类型:字符串
disable_gpg_check
:- 描述:禁用 GPG 签名检查。
- 类型:布尔值
- 默认值:
no
autoremove
:- 描述:如果为
yes
,则自动删除所有未使用的依赖项。 - 类型:布尔值
- 默认值:
no
- 描述:如果为
1. 安装软件包
安装单个软件包
ansible all -m yum -a "name=nginx state=present"
安装多个软件包
ansible all -m yum -a "name=nginx,git,vim state=present"
从特定仓库安装
ansible all -m yum -a "name=nginx enablerepo=epel state=present"
安装包并禁用 GPG 检查
ansible all -m yum -a "name=nginx disable_gpg_check=yes state=present"
简单的命令行帮助
要获取 yum
模块的所有选项和参数,可以使用以下命令查看详细帮助:
ansible-doc -s yum
2. 更新软件包
更新单个软件包到最新版本
ansible all -m yum -a "name=nginx state=latest"
更新所有可升级的软件包
ansible all -m yum -a "name=* state=latest"
3. 删除软件包
删除单个软件包
ansible all -m yum -a "name=nginx state=absent"
删除多个软件包
ansible all -m yum -a "name=nginx,git state=absent"
4. 安装特定版本的软件包
ansible all -m yum -a "name=nginx-1.14.1 state=present"
5. 禁用并清理无用的包
安装 yum-utils
并使用 package-cleanup
命令:
ansible all -m yum -a "name=yum-utils state=present"
ansible all -a "package-cleanup --oldkernels --count=2"
ansible all -a "package-cleanup --leaves"
Playbook示例
示例1:安装软件包
创建一个 Playbook 文件 install_packages.yml
,用于安装 nginx
软件包:
---
- name: Install Nginx
hosts: all
tasks:
- name: Ensure nginx is installed
yum:
name: nginx
state: present
示例2:安装多个软件包
可以在同一个任务中安装多个软件包,例如 nginx
,git
和 vim
:
---
- name: Install Multiple Packages
hosts: all
tasks:
- name: Ensure nginx, git, and vim are installed
yum:
name:
- nginx
- git
- vim
state: present
示例3:更新软件包
将 nginx
软件包更新到最新版本:
---
- name: Update Nginx
hosts: all
tasks:
- name: Ensure nginx is the latest version
yum:
name: nginx
state: latest
示例4:删除软件包
删除 nginx
软件包:
---
- name: Remove Nginx
hosts: all
tasks:
- name: Ensure nginx is absent
yum:
name: nginx
state: absent
示例5:从特定仓库安装软件包
从 epel
仓库安装 nginx
软件包:
---
- name: Install Nginx from EPEL Repo
hosts: all
tasks:
- name: Ensure nginx is installed from EPEL repository
yum:
name: nginx
enablerepo: epel
state: present
示例6:安装特定版本的软件包
安装 nginx
的特定版本 1.14.1
:
---
- name: Install Specific Version of Nginx
hosts: all
tasks:
- name: Ensure nginx 1.14.1 is installed
yum:
name: nginx-1.14.1
state: present
示例7:禁用 GPG 检查
安装 nginx
软件包并禁用 GPG 检查:
---
- name: Install Nginx with GPG Check Disabled
hosts: all
tasks:
- name: Ensure nginx is installed with GPG check disabled
yum:
name: nginx
disable_gpg_check: yes
state: present
示例8:安装组包
安装 Development Tools
组包:
---
- name: Install Development Tools Group
hosts: all
tasks:
- name: Ensure Development Tools are installed
yum:
name: "@Development Tools"
state: present
示例9:安装所有可升级的软件包
更新所有可升级的软件包:
---
- name: Update All Packages to Latest Version
hosts: all
tasks:
- name: Update all packages to the latest version
yum:
name: '*'
state: latest
示例10:卸载并清理无用的软件包
安装 yum-utils
并使用 package-cleanup
命令清理无用的软件包:
---
- name: Cleanup Unnecessary Packages
hosts: all
tasks:
- name: Install yum-utils
yum:
name: yum-utils
state: present
- name: Remove unnecessary packages
shell: package-cleanup --leaves --exclude-bin
become: yes