使用ansible的package模块升级所有package安全吗?

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

我有许多 ansible playbook,用于在 Debian 和 CentOS VM 上执行某些操作。到目前为止,当我需要处理包时,我会使用 ansible 模块 aptyum。因此,我必须检查安装了哪个操作系统,然后使用正确的 ansible 模块。

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

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

yum: name=* state=latest

因此,我认为我可以使用 package 来执行以下操作:

package: name=* state=latest

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

提前致谢!

编辑:

我发现使用

package: name=* state=latest
将尝试安装或更新所有可用的软件包,而不仅仅是更新已安装的软件包。因此这对我来说不是一个有效的解决方案。或者,我可以继续使用 yumapt 来执行此特定操作,但我确实想知道为什么不能使用 package 来执行此操作,或者如果我缺少某些内容。

ansible
3个回答
6
投票

经过进一步测试,我现在可以自己回答这个问题了,答案是否定的。在 Debian 计算机上使用

package: name=* state=latest
将尝试安装或更新存储库中可用的每个软件包,因此它不能用作
apt-get upgrade
的替代品。


0
投票

截至 2024 年,模块

ansible.builtin.apt
ansible.builtin.yum
package: name=* state=latest
视为“将所有软件包更新到最新版本”

  1. APT 示例“更新所有包”

  2. YUM“名称”“使用状态=最新,这可以是'*',这意味着运行yum -y update”


-1
投票

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

来自package文档:

该模块实际上调用每个系统的相关包模块(apt、yum 等)。

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

来自 apt 文档:

还支持名称通配符 (fnmatch),如 apt* 和版本通配符,如 foo=1.0*。

来自 yum->name 文档:

当使用state=latest时,这可以是'*',这意味着运行:yum -y update。

编辑:@Xavier Alvarez 测试后,

apt: name=* state=latest
将安装存储库中的所有软件包

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