ansible 包与 yum 模块

问题描述 投票:0回答:2

我是 Ansible 世界的新手。我已经创建了一些剧本,并且我对这项技术越来越熟悉。 在我的剧本中,我一直使用命令

yum
来安装和管理新软件包,但最近我发现了另一个命令
package
,它声称与操作系统无关。

因此我的问题是:它们之间有什么区别?

特别是,如果我创建一个我知道将在 RHEL 环境(其中 yum 是默认包管理器)中执行的角色和剧本,那么使用命令

package
而不是
yum
可以获得哪些优势?

预先感谢您的帮助。

ansible
2个回答
11
投票

Ansible

package
模块根据现有事实自动检测您的操作系统默认包管理器(例如 yum、apt)。

存储的事实环境变量是

"ansible_pkg_mgr"

这是一个相同的命令。

ansible localhost -m setup | grep ansible_pkg_mgr

如果您在环境中使用多个操作系统,那么您应该使用

package
而不是
yum or apt
,而不是指定包管理器。


10
投票

Ansible 包模块更通用 但看起来你仍然需要处理包名称的差异。来自包模块

# This uses a variable as this changes per distribution.
- name: remove the apache package
  package:
    name: "{{ apache }}"
    state: absent

在本例中,包名称为:

  • RHEL - httpd
  • Debian/Ubuntu - apache2

所以

{{ apache }}
变量必须根据操作系统进行设置。

© www.soinside.com 2019 - 2024. All rights reserved.