CFEngine – 将不同的策略应用于不同的服务器

我正在使用一些Linux服务器上的CFEngine。
我的问题是,我需要能够应用单独policys取决于服务器。 我仔细查看了他们的文档,找不到可以或不可以完成的任何地方。
这可能使用CFEngine? 或者我应该找别的地方。

很久以前,我们没有使用CF引擎,但在使用CF引擎时遇到了类似的问题。 最后,我们想出了一个解决scheme,使用一个dynamic的bundle序列。 我正在拯救和修改一个旧的代码片段,所以语法可能是错误的,但我认为你会得到一个想法。

bundle common g { classes: "some_servers" expression => "someserver01|someserver02"; "another_servers" expression => "anotherserver01|anotherserver02"; # Define other classes for your hosts here as needed vars: any:: "bs_common" slist => { "bundle_1" }; some_servers:: "bs" slist => { "@(g.bs_common)", "bundle_2", "bundle_3", }; another_servers:: "bs" slist => { "@(g.bs_common)", "bundle_3", }; } body control common { bundlesequence => { "@(g.bs)", }; } 

您可以使用类来定义应用策略的位置,默认情况下Cfengine将创build一个具有运行的每个服务器主机名的类。

例如,如果服务器主机名是server01,那么在下面的promisse中,Cfengine将报告“Hello master”(检查syslog以读取报告),如果主机名是server02,Cfengine将报告“Hello slave”:

 body common control { bundlesequence => { "hello" }; } bundle agent hello { reports: server01:: "Hello master!" comment => "It's just a dummy report for server01"; server02:: "Hello slave!" comment => "It's just a dummy report for server02"; } 

PS。 您可以使用以下命令从名为hello.cf的文件运行此示例策略:

 cf-agent -I -f hello.cf 

你可以在官方文档中find更多关于使用它们的类和操作的信息。