Назад | Перейти на главную страницу

как чередовать запланированные задачи 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 хардкласс как-то?

Я бы не рекомендовал использовать 1-минутные классы разрешения, такие как Min01, если вы не запускаете агент с 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;
}

#cfengine на irc.freenode.net и help-cfengine также отличные места, чтобы задать вопросы, связанные с CFEngine.