我已经开始运行 cfengine3,使用 cf-execd 以默认的每 5 分钟间隔安排运行 cf-agent。
cf-execd 捕获 cf-agent 的输出(使用 --inform 选项运行),将输出存储在 $WORKDIR/outputs 目录中,并将结果通过电子邮件发送(但前提是它与上次运行不同)。就像你想象的那样,每 5 分钟输出一个文件,这个目录会很快被大量文件填满,预计用户会清理这个目录。
我创建了一个规则,将删除这些超过 3 天的输出文件,但是这产生的问题是每个输出都与前一个不同(因为每次都会删除一个新文件),因此将发送一封电子邮件发送。因此,我从输出目录中的大量文件转到收件箱中的大量电子邮件!
我真正想要的是在修复某些承诺时抑制消息,特别是删除输出目录中文件的承诺。它基本上只会否定该承诺的 -I 选项。或者,如果我可以将时间边界从“现在”更改为固定点(比如每周三),我至少可以将电子邮件数量限制为每周一封。
看起来你从来没有得到你的问题的答案,所以我现在本着“迟到总比没有好”的精神发布这个。
您问:
据我所知,不可能为单个承诺否定 --inform 开关。
这可以使用“ifelapsed”参数来实现——这给出了运行承诺的最小频率。考虑这个例子:
或者你可以在星期三运行这个承诺,使用特殊课程。我更喜欢这种
ifelapsed
方法,它不依赖于工作日(你永远不知道该主机是否可能不会在某个星期三运行......),如下所示:实际上我得到了一个更简单的答案——不要使用 --inform 运行 cf-agent。
让 cf-engine 做这件事,不要试图跟踪正在进行的修复,主要关注的是系统已达到所需状态,而不是它是如何到达那里的。
对于想要以极其详细的方式跟踪系统的每一次变更的变更管理制度来说,这似乎是一种诅咒,但我发现这是唯一一种允许人们在保持理智的情况下使用 cf-engine 的心态。
当然,您的回答完全是我提出的问题的正确答案,这就是我勾选它的原因。
在我的“继承”部署中,我发现 中
garbage_collection
已经有一个包site.cf
,但它没有从任何地方调用。我需要将它添加到捆绑序列中promises.cf
不确定在新部署中是否会出现这种情况;如果是这样,您可能需要更新您的承诺(我知道我需要)
希望它有帮助,卡梅伦