我正在尝试在大型虚拟服务器池上执行计划任务,但我想尽量减少对虚拟机管理程序的性能影响,理想情况下一次在一台服务器上执行它。
想想这样的事情:
Hr07.Min01.host_1::
"scheduled_service_restart" usebundle => service_restart;
Hr07.Min02.host_2::
"scheduled_service_restart" usebundle => service_restart;
Hr07.Min03.host_3::
"scheduled_service_restart" usebundle => service_restart;
...
现在,这可以起作用了;但是列表会显著增长,并且看起来并不美观。
我可以以某种方式将主机名序列号(或任何通用类的序列号)与硬类中的整数进行匹配MinXY
吗?
答案1
我不建议使用 1 分钟分辨率类(如 Min01),除非您以 1 分钟的间隔运行代理。该类仅在那一分钟内定义。默认情况下,代理每 5 分钟运行一次,即使策略集很大,完整的策略运行通常也会在一分钟内完成。
你可能想看看展开类函数。您可以按小时或每日周期确定性地定义一个类。例如:
bundle agent example
{
classes:
Hr07::
"service_restart"
expression => splayclass("$(sys.fqhost)", "hourly"),
comment => "So that we only perform restarts during the 7 oclock
hour, and so that not all hosts restart at the same time
we splay the restart class over an hour. Each host will
define some 5 minute time slot during the hour.";
methods:
service_restart::
"scheduled_service_restart" usebundle => service_restart;
}
irc.freenode.net 上的 #cfengine和帮助-cfengine也是询问 CFEngine 相关问题的好地方。