每个补丁星期二之后的星期六(这是该月的第二个星期二),我想通过Puppet安装更新。我为此做了一个计划任务,它本身是通过puppetlabs / scheduled_task模块中的scheduled_task
资源来管理的。我正在为此任务使用此触发器:
$trigger = {
schedule => monthly,
start_time => '13:15',
which_occurrence => second,
day_of_week => [sat],
minutes_interval => '80',
minutes_duration => '560',
}
。但是,在像这样的月份中,第二个星期二在第二个星期六之后到来,此触发器将在错误的日期启动任务。如何在每个月的第二个星期二之后的第一个星期六触发任务?
也许有可能计算星期二补丁发布后的天数,但这将要求Puppet能够获取每月第二个星期二的日期(不能进行自动对焦)。
答案 0 :(得分:0)
puppetlabs / task_scheduler模块管理通过Windows内置的Task Scheduler服务运行的任务。 Puppet本身不运行任务。它只是向系统服务注册它们并管理它们的属性。这对您来说是个问题,因为据我所知,Windows任务计划程序不支持您要查找的计划类型。当然,puppetlabs / scheduled_task无法提供底层操作系统不支持的功能。
您的替代方案包括但不一定限于:
为任务选择其他时间表。例如,将任务安排在该月的第三个星期六,该日期将始终在第二个星期二之后。
使用Exec
来执行更新,并结合条件逻辑和Puppet时间表来控制应用程序的日期和频率。
的确,后者需要Puppet来执行一些日期计算。 Puppet可以做到这一点,但是您可能需要为此编写一个自定义函数(在Ruby中)。自定义功能可以在目录构建过程中访问,并且可以使用Ruby的几乎所有功能。