每天运行一次木偶清单,但每小时一次

时间:2017-12-16 00:04:41

标签: puppet

我每小时都有节点检查一个木偶服务器。

我们有一些任务要在办理登机手续时运行,但每天只运行一次。

是否可以在木偶清单中创建一个节省上次运行时间的函数,并且仅在最后一次超过24小时时才运行?

更新

我尝试了一件半工作的东西。这就是将木偶代码块移动到一个单独的文件中,让我的主木偶确保存在一个cron作业。

我从其他部门回来的投诉是他们再也看不到木偶板上的安装错误了。此图像显示旧木偶分支上的2个节点和新分支上的1个节点:

enter image description here

cron运行puppet apply myFile.pp我们不再从Puppetboard上的失败中获得反馈,因为主脚本只是确保cron作业存在:

1 个答案:

答案 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在那个小时内运行不止一次,例如系统管理员可以手动运行它。