有没有办法在 puppet 实施更改之前运行命令?

phe*_*mer 2 linux puppet

我想让 puppet 在执行任何类型的更改之前运行特定的命令。我知道prerun_command主 puppet.conf中的选项,但这不是我要找的。我希望命令仅在某些事情即将发生变化时运行,而不是在每次木偶运行时运行。

这是场景。假设我在负载均衡器后面有一堆 Web 服务器。然后我希望 puppet 更新网站文件。但是为了防止出现某些文件已更新而其他文件未更新以及混合版本导致问题的问题,我想将服务器从负载平衡器池中取出。
我可以编写一个脚本,运行时会告诉负载平衡器从池中删除该框。然后人偶可以进行更改,并postrun_command在完成后用于将盒子放回池中。但是我需要一种方法来运行该脚本以从池中删除服务器。


我能想到的唯一解决方案是在盒子上保留 2 个文件副本。一个临时副本,当 puppet 更新它时,使用通知操作触发删除脚本,然后从临时位置复制到实时位置。但我希望有一些更通用的东西可以处理正在执行的任何更改(升级包,重新启动服务,创建用户,任何事情)。

小智 5

Puppet 的主要目的是配置管理。也就是说,它将强制执行您声明的配置。您需要(基于您在问题中概述的场景)是command and control。正如@Mike 指出的那样,面料是一种选择。我个人喜欢 Marionette Collective,因为它是 Puppet Labs 的产品,并且与 Puppet 内部结构(事实等)配合得很好。