Ansible包与yum模块的区别

13

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

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

特别是,如果我创建了一个角色和一个playbook,我知道它将在RHEL环境中执行(其中yum是默认的软件包管理器),相比使用yum命令,使用package命令会带来哪些优势呢?

非常感谢您的帮助。

2个回答

10

Ansible的package模块会自动检测您操作系统的默认软件包管理器(例如yum,apt)。

存储这些信息的事实环境变量是"ansible_pkg_mgr"

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

如果您在环境中使用多个操作系统,则应该使用package而不是指定软件包管理器yum或apt


3
相对于特定的模块(如apt、yum等),使用package是否存在不利影响?换句话说,“如果您不处于多操作系统环境中,是否应该选择yum/dnf/apt?如果是这样,@deepak为什么要这样做?” - vrms

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 }}变量。

此外,差异不仅体现在软件包名称上,还体现在操作系统特定模块接受的参数上(这些参数从“package”传递给“apt”和/或“dnf”等)。 - Gerd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接