Scheduled-Task
如何根據主機名錯開計劃的 cfengine 任務
我正在嘗試在大型虛擬伺服器池上執行計劃任務,但我想盡量減少對管理程序的性能影響,理想情況下一次在一台伺服器上執行它。
想想這樣的事情:
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
我可以以某種方式將主機名序列號(或任何通用類的序列號)與硬類中的整數匹配嗎?
我不建議使用像 Min01 這樣的 1 分鐘解析度類,除非您以 1 分鐘的間隔執行代理。該類只會在那一分鐘內定義。預設情況下,代理每 5 分鐘執行一次,即使使用大型策略集,完整的策略執行通常也會在一分鐘內完成。
您可能想看看splayclass函式。您可以在每小時或每天的時間段內確定地定義一個類。例如:
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 和help-cfengine也是詢問CFEngine 相關問題的好地方。