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

我有多个RPM列表(每个configuration一个)和一组远程机器。 每个列表都包含在我select的configuration中运行我的机器所需的所有 RPM。

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

  1. configuration的RPM列表中的每个RPM都是以完全相同的版本安装的; 和
  2. 任何不在列表中的RPM都没有安装(如果需要的话,卸载它)

我一直在研究Ansible和它的yum模块 ,但是虽然很容易确保已经安装了RPM,但是我找不到指定应该卸载任何其他RPM的方法。

什么是这样做的好方法?

就在那里,在你链接的文档中:

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

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

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

但是,如果您的要求是确保没有安装不在您的清单中的包裹,您应该开始检查您的供应程序,即如果机器自成立以来一直处于控制之下,则不应该有任何控制权限包要安装。

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

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