ansible包vs yum模块

时间:2018-02-20 09:36:34

标签: ansible

我是Ansible世界的新手。我已经创建了一些剧本,并且我越来越熟悉这项技术。 在我的剧本中,我总是使用命令yum来安装和管理新包,但最近我发现了另一个声称与操作系统无关的命令package

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

特别是,如果我创建一个我知道将在RHEL环境中执行的角色和剧本(yum是默认的包管理器),我可以从使用命令package获得哪个优势而不是yum

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

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

存储的事实环境变量是"ansible_pkg_mgr"

这是一个相同的命令。 ansible localhost -m setup | grep ansible_pkg_mgr

如果您在您的环境中使用多个操作系统,那么您应该使用package而非yum or apt而不是指定包管理器。

答案 1 :(得分:3)

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

# 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}}变量必须设置正确