如何使用Chef卸载食谱中未包含的陈旧(或旧软件包)并保持完整性?

时间:2018-09-06 15:00:10

标签: chef chef-recipe chef-solo

我们似乎已经通过一些旧食谱安装了“ expect”软件包很久了。目前,我们最近通过更新的食谱安装“ pexpect”。 而且,我不需要的系统上仍然可以使用“期望”包。

rpm -qa | grep expect
expect-5.45
pexpect-2.3

大多数菜谱都会维护其测试,但是我们不对不应该存在的内容或可能导致系统偏离的软件包进行测试。

我也了解,如果我们在安装带有食谱的软件包时,希望我们也添加了删除该软件包的资源。

ohai或其他技术(最佳实践)是否可以通过一种简单的方法来确定版本偏差和过时的软件包,并报告或触发软件包删除过程?

2 个答案:

答案 0 :(得分:0)

要点是,您真的不在乎,如果系统安装了一些其他软件包,无论是手动还是通过较旧的自动化软件包,直到,它们都会开始干扰您的过程。在这种情况下,如果有几样东西提供相同的功能,则安装 pexpect 的食谱也应删除干扰包 expect

由于初始系统的配置可能有所不同,因此很少有技术可以找到与配方的偏差。同时,您实际上并不需要这些,因为如果您自动配置了系统,则只需删除现有计算机(重新安装干净的OS)并应用配方即可将其更新。

答案 1 :(得分:0)

您的食谱和食谱正在声明系统上某些资源的外观,其中一些声明应该是应该存在的,而其他声明则应该是存在的。但是,您的菜谱中有许多与您无关的事情。例如,即使您使用user资源安装了某些用户,也不会注册管理/etc/passwd中的所有用户(假设您拥有* nix主机)。

因此,如果您的菜谱根本没有提到expect,则意味着您不必关心它是否已安装。如果不安装expect对于系统很重要,则应:remove软件包。

您的菜谱不应该认为这是安装给定软件包的唯一原因,因此卸载先前安装的软件包并非总是正确的选择。

最后,请信任包装系统。如果pexpect无法在安装了expect的主机上运行,​​则应声明它与expect冲突或过时。