Принимающая группа на 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".

Другие вопросы по тегам