web-dev-qa-db-ja.com

ホスト名に基づいてCFEngineタスクをスケジュールする方法

私は仮想サーバーの大型化プールでスケジュールされたタスクを実行しようとしていますが、ハイパーバイザーへのパフォーマンスの影響を最小限に抑え、理想的には1つのサーバー上でそれを実行します。

このようなことを考えてください:

    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
lubomir.brindza

1分間隔でエージェントを実行していない限り、MIN01のような1分の解像度クラスを使用することはお勧めしません。そのクラスはその1分の間にのみ定義されます。デフォルトでは、エージェントは5分ごとに実行され、大規模なポリシーセットでも完全なポリシー実行が通常1分以内に完了します。

splayclass 関数を見たいかもしれません。 1時間または毎日の期間にわたってクラスを決定することができます。例えば:

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の#cfenginehelp-cfengine CFEngine関連の質問をする素晴らしい場所です。

1
Nick Anderson