通过我们的 cfengine 设置,我一直想要定义由主机组组成的类,并且我们有很多主机名由 4 部分组成,其中短名称是非唯一的。我反复阅读文档说不要在主机名中使用点,但有时在某些情况下,它似乎可以使用 xxx_yyy_domain_com,例如:
在角色文件中,我们定义了一个包含一堆机器的数组作为名称服务器:
bundle agent tfn_roles {
vars:
# DNS servers
"dns_servers" slist => {
"hetzner8", # ns-frk
"ubiquity1", # ns-lax
"ns_ubi3_domain_org",
"vps001_dfw_domain_org", # ns-dfw
"tagadab2", # ns-lcy
"atlantic1", # ns-mco
};
然后在 bind9.cf 承诺文件中:
bundle agent service_bind9 {
meta:
"tags" slist => { "autorun" };
classes:
"dns_servers" or => { "@(tfn_roles.dns_servers)" };
并且对于那些具有带下划线的 FQDN 的 2 个主机,该类的一系列承诺似乎正确执行。
但是,在同一个角色文件中,我们有另一个仅由字符串定义的类:
# Server running the daily tasks - should only be one.
"daily_tasks_server" string => "vps007_dfw_domain_org";
然后在日常任务承诺文件中:
bundle agent service_daily_tasks {
meta:
"tags" slist => { "autorun" };
classes:
"daily_task_server" expression => "$(tfn_roles.daily_tasks_server)";
这似乎不起作用。
有人可以解释为什么,以及解决方法吗?我是否不得不说:
"daily_task_server" or => "$(tfn_roles.daily_tasks_server)";
如果是这样,为什么?我误解了一些基本的cfengine语法规则吗?
更新:不,进行上述更改仍然无效。
(顺便说一句,我已经阅读了 CFEngine 上的主机组- 请不要告诉我我必须阅读 Zamboni 先生的书。虽然我很想在某个时候阅读,但当我有时间时......)