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