1

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

例如,我有 2 组不同的 Web 集群,在一个集群httpd.conf上保持在下/usr/local/apache/httpd.conf,而在另一组上保持在下/etc/httpd/httpd.conf

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

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

4

1 回答 1

2

一般的答案是您为每个组定义一个类,并据此将适当的路径分配给变量。例如:

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 章中的为主机组定义类

于 2014-06-19T07:22:23.510 回答