我必须编写一个用于定义各种主机组的策略,对于特定的事情,它应该根据主机组检查参数集。
例如,我有两组不同的网络群集,一个群集httpd.conf
保留在/usr/local/apache/httpd.conf
下,另一个群集保存在/etc/httpd/httpd.conf
下。
我有一个策略来检查这些配置的文件更改,但我想要一种方法,我可以为特定的主机组定义它应该检查的位置。
任何提示,帮助都会非常明显。
答案 0 :(得分:2)
一般的答案是你为每个组定义一个类,并根据它为变量分配适当的路径。例如:
vars:
group1::
"httpd_conf" string => "/usr/local/apache/httpd.conf";
group2::
"httpd_conf" string => "/etc/httpd/httpd.conf";
然后在文件操作中使用$(httpd_conf)
,它将根据组具有正确的值。
可能的tricker部分是如何定义这些类。在这种情况下,它取决于您的设置和您的偏好。例如,您可以通过显式列出每个组中的主机来定义类:
classes:
"group1" or => { "host1", "host2", "host3" };
"group2" or => { "host4", "host5", "host6" };
或者通过匹配主机名模式:
classes:
"group1" expression => classmatch("grp1.*");
"group2" expression => classmatch("grp2.*");
还有其他可能性。要获得完整的处理,请查看我的书Defining classes for groups of hosts的第6章中的"Learning CFEngine 3"。