在我的 site.pp 清单中,我有以下内容
import "nodes/*.pp"
这样我就可以为不同的组创建单独的文件。但是,在每个 .pp 文件中,我仍然必须明确设置要应用模块和类的节点的名称,如下所示:
node puppet-client-1 {
include testmodule
}
我的问题是,如何将多个节点组合在一起,然后将模块和/或类应用于该节点组?例如:
group testgroup{
puppet-client1
puppet-client2
}
node webservers
{
include testmodule
}
当我在这里时,我的日志输出了以下内容:
The use of 'import' is deprecated at /etc/puppet/manifests/site.pp:2
如果此功能被弃用,我该如何将清单文件分成几组?
谢谢 :)
答案1
有两种方法:
1)一行中多个节点名称:
node 'puppet-client1', 'puppet-client2' {
include testmodule
}
2)可以使用正则表达式定义节点,例如:
node /^puppet-client[0-9]+/{
include testmodule
}
但这取决于合适的主机命名方案。
您可以查看官方文档节点定义。
答案2
最简单的方法是实际编写一份 ENC - 一份外部节点分类器这将允许您将您的“组”抽象为用您熟悉的任何语言编写的简单脚本。
请注意,这将返回类和参数,因此这可以使 Puppet 更像 ansible,这样您就可以同时获得两全其美的效果。
从文档来看,该脚本使用要分类的节点的参数运行,并简单返回要应用的类和参数的 YAML 描述。