CFEngine上的主机组

时间:2014-06-19 06:54:13

标签: linux cfengine

我必须编写一个用于定义各种主机组的策略,对于特定的事情,它应该根据主机组检查参数集。

例如,我有两组不同的网络群集,一个群集httpd.conf保留在/usr/local/apache/httpd.conf下,另一个群集保存在/etc/httpd/httpd.conf下。

我有一个策略来检查这些配置的文件更改,但我想要一种方法,我可以为特定的主机组定义它应该检查的位置。

任何提示,帮助都会非常明显。

1 个答案:

答案 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"