我们通过puppet对一些服务器进行基本管理 – 服务器本身作为集群系统的一部分运行,处理用户帐户等其他方面,并包括检测密钥文件(/ etc / passwd等)变化的监控脚本.如果puppet更新包,它可能会更改触发监视系统的这些密钥文件. (这不是无意的)
监控系统有一个可以手动运行以清除状态的命令,每当木偶应用任何更改时我们都必须执行此操作,当我们开始收到电子邮件时!
我们可以定义一个在post run_stage中运行的exec来运行命令,但默认情况下这会在每次puppet运行时触发,然后我们的报告将始终显示为puppet进行的更改,无论是否进行了更改.
有没有办法我们可以设置exec,只有当puppet应用了其他更改时它才会运行?
解决方法
如果exec资源具有专用阶段,则可以通过使其订阅所有其他阶段来实现所需的行为,例如,
exec { "pacify-rkhunter": ... subscribe => Stage['pre','main','aux'],refreshonly => true,}