我想要一种方法,它只在特定时间每天评估一次特定课程。现在我正在从 cron 运行我的 puppet 代理,但我想将其更改为作为守护程序运行,或者更频繁地运行。增加频率的障碍是有一个类需要大约 4 分钟来处理,并且不需要经常发生。我试图找到一些方法来每天只从 cron 评估一次特定的类。
是否有一种简单的方法可以让我设置环境变量 ( FOO=bar;puppet agent ..
),或将命令行选项 ( puppet agent .. --foo bar
) 添加到 crontab 中,这将成为我可以在清单中使用以包含或不包含类的事实?
class foobar {
if 'bar' == $::foo {
# do the slow stuff
}
}
Run Code Online (Sandbox Code Playgroud)
一个时间表喜欢它的声音会提供你在找什么。首先,您创建一个计划资源,用于指定事情何时可以运行以及在给定时间段内运行多少次。
schedule { "slow":
range => "1 - 5",
period => daily,
repeat => 1,
}
Run Code Online (Sandbox Code Playgroud)
上面的示例将仅在凌晨 1 点和凌晨 5 点以及最多一次评估或运行。您可以删除该range
参数,它会在一天中的任何时间运行,但同样只能运行一次。
在资源上,然后指定schedule
元参数以将它们链接到上述计划:
exec { "example":
command => "/usr/bin/foo",
unless => "/usr/bin/bar",
schedule => "slow",
}
Run Code Online (Sandbox Code Playgroud)
当您使用 运行 Puppet 时--debug
,如果它已经被评估了给定的次数,或者范围不适用,您现在将看到以下内容:
debug: /Stage[main]//Exec[example]: Not scheduled
Run Code Online (Sandbox Code Playgroud)
如果你有一些资源,你可以在你限制的类中使用资源默认值来影响相同类型的所有资源:
Exec {
schedule => "slow",
}
Run Code Online (Sandbox Code Playgroud)
您需要为每种资源类型执行此操作 - Exec、File、Augeas 等。
关于改进这一点的几个注意事项:
schedule
元参数应用于类似乎不起作用,可能值得提出错误 归档时间: |
|
查看次数: |
3758 次 |
最近记录: |