我每小时都有节点检查一个木偶服务器。
我们有一些任务要在办理登机手续时运行,但每天只运行一次。
是否可以在木偶清单中创建一个节省上次运行时间的函数,并且仅在最后一次超过24小时时才运行?
更新
我尝试了一件半工作的东西。这就是将木偶代码块移动到一个单独的文件中,让我的主木偶确保存在一个cron作业。
我从其他部门回来的投诉是他们再也看不到木偶板上的安装错误了。此图像显示旧木偶分支上的2个节点和新分支上的1个节点:
让cron
运行puppet apply myFile.pp
我们不再从Puppetboard上的失败中获得反馈,因为主脚本只是确保cron作业存在:
答案 0 :(得分:3)
您至少有两个选择。
假设您的未指定任务由exec资源处理,您可以设计此方式,使Puppet每天只将exec视为不同步。这可以通过让你的exec将日历日写入文件来实现。然后,您可以添加unless
属性:
unless => "test $(</var/tmp/last_run) == $(date +%d)"
显然你的执行官还需要跟踪更新该文件。
第二种选择是使用计划元参数:
schedule { 'everyday':
period => daily,
range => '1:00 - 1:59',
}
exec { 'do your thing':
schedule => 'everyday',
}
这假设Puppet每小时只运行一次。当然,风险是Puppet在那个小时内运行不止一次,例如系统管理员可以手动运行它。