Puppet:只有当 Puppet 做出更改时,如何运行 exec

Puppet:只有当 Puppet 做出更改时,如何运行 exec

我们正在通过 puppet 对一些服务器进行基本管理 - 服务器本身作为集群系统的一部分运行,该系统处理用户帐户等其他方面,并包含一个用于检测关键文件(/etc/passwd 等)更改的监控脚本。如果 puppet 更新软件包,它可能会更改这些关键文件,从而触发监控系统。(这并非无意的)

监控系统有一个可以手动运行的命令来清除状态,每次 puppet 应用任何更改时,我们都必须执行此操作,当我们开始收到电子邮件时!

我们可以定义一个在 run_stage 后运行的 exec 来运行命令,但默认情况下它会在每次 puppet 运行时触发,然后我们的报告将始终显示为 puppet 所做的更改,无论是否进行了更改。

有没有办法可以设置 exec 以便它仅在 puppet 应用了其他更改时才运行?

答案1

如果exec资源具有专用阶段,则可以通过让其订阅所有其他阶段来实现所需的行为,例如

exec { "pacify-rkhunter":
    ...
    subscribe   => Stage['pre','main','aux'],
    refreshonly => true,
}

相关内容