Ansible软件包与yum模块

dav*_*e79 5 ansible

我是Ansible世界的新手。我已经创建了一些剧本,并且每天对这项技术的了解越来越多。在我的剧本中,我一直使用该命令yum来安装和管理新软件包,但是最近我发现了另一个package声称独立于操作系统的命令。

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

特别是,如果我创建了一个角色和一个剧本,并且知道该剧本将在RHEL环境(yum是默认的程序包管理器)中执行,那么从使用命令package而不是从中获得什么好处yum

在此先感谢您的帮助。

dee*_*pak 5

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

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

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

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

  • 在特定模块(`apt`、`yum`、...)上使用 `package` 是否有任何缺点,或者换句话说,“如果您需要使用 `yum`/`dnf`/`apt`,那么您是否应该选择`yum`/`dnf`/`apt` **不在**多操作系统环境中吗?如果是这样,为什么是 @deepak ? (3认同)

bod*_*odo 5

Ansible 包模块更通用,但看起来您仍然必须处理包名称的差异。从包模块

# This uses a variable as this changes per distribution.
- name: remove the apache package
  package:
    name: "{{ apache }}"
    state: absent
Run Code Online (Sandbox Code Playgroud)

在这种情况下,包名称为:

  • RHEL - httpd
  • Debian/Ubuntu - apache2

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