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

时间:2016-11-06 09:47:31

标签: ansible ansible-playbook

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

但是,我最近在那里学到了一个名为package的模块,它以某种方式统一了包管理器,降低了剧本的复杂性,所以我现在尝试使用这个模块仅

我想要执行的其中一项操作是更新所有软件包。问题是ansible's documentation没有说明如何使用来执行此操作。然而,它确实说明了如何使用 apt yum :第一个使用和升级操作,后者建议写一些类似的东西:

yum: name=* state=latest

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

package: name=* state=latest

当我运行这个剧本时,我没有遇到任何错误,但这并没有在任何地方记录, apt yum 不要工作方式完全相同。所以我的问题是:上面的命令是安全的,就像它实际上做我想做的那样吗?

提前致谢!

编辑:

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

2 个答案:

答案 0 :(得分:1)

经过进一步测试后,我现在可以自己回答这个问题了,答案是否定的。在Debian计算机上使用package: name=* state=latest将尝试安装或更新存储库中可用的每个程序包,因此无法将其用作apt-get upgrade的替代。

答案 1 :(得分:0)

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

来自package文档:

  

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

因此,无论你传递给它,都应该由带下划线的打包器yum或apt支持。

来自apt文档:

  

也支持像apt *这样的名称通配符(fnmatch)和foo = 1.0 *等版本通配符。

来自yum->name文档:

  

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

编辑:在@Xavier Alvarez测试后,apt: name=* state=latest将在repo中安装所有包