使用ansible的包模块升级所有包是否安全?

Is it safe to use ansible's package module to upgrade all packages?

我有许多 ansible playbook,用于在 Debian 和 CentOS VM 上执行某些操作。直到现在,当我需要处理包时,我会使用 ansible 模块 apt and yum。因此,我必须检查安装了哪个 OS,然后使用正确的 ansible 模块。

不过,我最近了解到有一个名为 package 的模块,它以某种方式统一了包管理器,降低了 playbook 的复杂性,所以我现在只尝试使用这个模块。

我要执行的操作之一是更新所有包。问题是 ansible's documentation 没有说明如何使用 package 来做到这一点。但是,它确实说明了如何使用 aptyum 来做到这一点:第一个使用和升级操作,后者建议编写如下内容:

yum: name=* state=latest

出于这个原因,我认为我可以使用 package 来执行以下操作:

package: name=* state=latest

当我 运行 这个剧本时,我没有遇到任何错误,但这在任何地方都没有记录,aptyum 不以完全相同的方式工作。所以我的问题是:上面的命令是否安全,因为它实际上做了我想要它做的事情吗?

提前致谢!

编辑:

我发现使用 package: name=* state=latest 会尝试安装或更新所有可用的包,而不是只更新已安装的包。因此,这对我来说不是一个有效的解决方案。或者,我可以继续使用 yumapt 来执行此特定操作,但我想知道为什么无法使用 ,或者如果我遗漏了什么。

根据下面的文档,我认为很明显您所描述的使用可以被认为是安全的。

来自 package 文档:

This module actually calls the pertinent package modules for each system (apt, yum, etc).

因此,无论您传递给它什么,都应该受到带下划线的包装程序 yum 或 apt 的支持。

来自 apt 文档:

Name wildcards (fnmatch) like apt* and version wildcards like foo=1.0* are also supported.

来自 yum->name 文档:

When using state=latest, this can be '*' which means run: yum -y update.

编辑:@Xavier Alvarez 测试后 apt: name=* state=latest 将安装 repo 中的所有软件包。

嗯,经过进一步测试,我现在可以自己回答这个问题了,答案是否定的。在 Debian 机器上使用 package: name=* state=latest 将尝试安装或更新存储库中可用的每个软件包,因此它不能用作 apt-get upgrade.

的替代品