我们正在通过 puppet 对一些服务器进行基本管理 - 服务器本身作为集群系统的一部分运行,该系统处理用户帐户等其他方面,并包含一个监控脚本,用于检测关键文件(/etc/passwd 等)的变化。如果 puppet 更新一个包,它可能会更改这些触发监控系统的关键文件。(这不是无意的)
监控系统有一个可以手动运行的命令来清除状态,我们必须在每次 puppet 应用任何更改时执行此操作,当我们开始收到电子邮件时!
我们可以定义一个在 post run_stage 中运行的 exec 来运行命令,但默认情况下,每次 puppet 运行时都会触发,然后我们的报告将始终显示为 puppet 进行了更改,无论是否进行了更改。
有没有一种方法可以设置 exec 使其仅在 puppet 应用了其他更改时运行?
如果
exec
资源有一个专用阶段,您可以通过让它订阅所有其他阶段来实现所需的行为,例如