确保安装了一组给定的 RPM,并且只安装了这些 RPM

确保安装了一组给定的 RPM,并且只安装了这些 RPM

我有多个 RPM 列表(每个配置一个),以及一组远程机器。每个列表包括全部在我选择的配置中运行我的机器所需的 RPM。

对于给定的配置和机器,我需要确保:

  1. 配置的 RPM 列表中的每个 RPM 均已安装,并且版本完全相同;并且
  2. 任意转速不是列表中未安装(如有必要,请卸载)

我一直在研究 Ansible 及其yum 模块,但尽管确保安装给定的 RPM 很容易,但我找不到指定应卸载任何其他 RPM 的方法。

有什么好方法可以做到这一点?

答案1

它就在那儿,在您链接的文档中:

- name: remove the Apache package
  yum: name=httpd state=absent

请注意,它也可以应用于团体:

- name: install the 'Development tools' package group
  yum: name="@Development tools" state=absent

但是如果你的要求是确保任何如果列表中没有软件包则表示该软件包未安装,您应该开始检查您的配置程序,即,如果一台机器自启动以来就处于控制之下,那么安装软件包就不应该超出您的控制范围。

答案2

rpm -qa将列出所有已安装的 RPM。您可以简单地将已知良好的服务器输出保存到 txt 文件,然后针对其他服务器运行 diff。

我没有使用过 Ansible,但也许您可以使用此输出来列出要删除的软件包。

相关内容