Группа хостов в CFEngine

#linux #cfengine

#linux #cfengine

Вопрос:

Я должен написать политику для определения различных групп хостов, для конкретной вещи она должна проверять набор параметров в соответствии с группой хостов.

Например, у меня есть 2 разных набора веб-кластеров, один httpd.conf из которых находится под /usr/local/apache/httpd.conf управлением, а для другого набора он находится под /etc/httpd/httpd.conf управлением.

У меня есть политика для проверки изменений файлов в этих конфигурациях, но мне нужен способ, с помощью которого я мог бы определить для конкретной группы хостов, где именно она должна проверять.

Любой намек, помощь были бы очень заметны.

Ответ №1:

Общий ответ заключается в том, что вы определяете класс для каждой группы и присваиваете соответствующий путь переменной в соответствии с этим. Например:

 vars:
  group1::
    "httpd_conf" string => "/usr/local/apache/httpd.conf";
  group2::
    "httpd_conf" string => "/etc/httpd/httpd.conf";
 

Затем вы используете $(httpd_conf) в файловых операциях, и он будет иметь правильное значение в соответствии с группой.

Потенциально сложная часть заключается в том, как определить эти классы. В данном случае это зависит от ваших настроек и ваших предпочтений. Например, вы могли бы определить классы, явно перечислив хосты в каждой группе:

 classes:
  "group1" or => { "host1", "host2", "host3" };
  "group2" or => { "host4", "host5", "host6" };
 

Или путем сопоставления с шаблонами имен хостов:

 classes:
  "group1" expression => classmatch("grp1.*");
  "group2" expression => classmatch("grp2.*");
 

Есть и другие возможности. Для получения полной информации, пожалуйста, ознакомьтесь с Определением классов для групп хостов в главе 6 моей книги «Изучение CFEngine 3».