我必须编写一个定义各种主机组的策略,对于特定的事情,它应该根据主机组检查参数集。
例如,我有 2 组不同的 Web 集群,在一个集群httpd.conf
上保持在下/usr/local/apache/httpd.conf
,而在另一组上保持在下/etc/httpd/httpd.conf
。
我有一个检查这些配置的文件更改的策略,但我想要一种方法,我可以为特定的主机组定义它应该检查的位置。
任何提示,帮助将非常明显。
一般的答案是您为每个组定义一个类,并据此将适当的路径分配给变量。例如:
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.*");
还有其他可能性。有关完整的处理方法,请查看我的书“学习 CFEngine 3”的第 6 章中的为主机组定义类。