#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».