我是 Ansible 世界的新手。我已经创建了一些剧本,并且我对这项技术越来越熟悉。 在我的剧本中,我一直使用命令
yum
来安装和管理新软件包,但最近我发现了另一个命令 package
,它声称与操作系统无关。
因此我的问题是:它们之间有什么区别?
特别是,如果我创建一个我知道将在 RHEL 环境(其中 yum 是默认包管理器)中执行的角色和剧本,那么使用命令
package
而不是 yum
可以获得哪些优势?
预先感谢您的帮助。
Ansible
package
模块根据现有事实自动检测您的操作系统默认包管理器(例如 yum、apt)。
存储的事实环境变量是
"ansible_pkg_mgr"
。
这是一个相同的命令。
ansible localhost -m setup | grep ansible_pkg_mgr
。
如果您在环境中使用多个操作系统,那么您应该使用
package
而不是 yum or apt
,而不是指定包管理器。
Ansible 包模块更通用 但看起来你仍然需要处理包名称的差异。来自包模块
# This uses a variable as this changes per distribution.
- name: remove the apache package
package:
name: "{{ apache }}"
state: absent
在本例中,包名称为:
所以
{{ apache }}
变量必须根据操作系统进行设置。