我实际上正在运行Puppet 2.7x设置,以使用一组测试服务器对其功能进行基准测试。
我的实际site.pp
:
node 'devnode' inherits 'deploy' {
include 'server1.test.com'
include 'server2.test.com'
include 'server3.test.com'
include 'server4.test.com'
}
node 'deploy' {
include motd
include ssh
include ntp
}
没有按预期工作(意思是:motd
,ssh
和ntp
模块未应用于{{1}内的节点serverN.test.com
节点)。
我之前有以下devnode
:
site.pp
但是当我想在单个节点上测试特定模块时,它缺乏灵活性。
考虑以下因素:
node /^server[1-4]\.test\.com$/ {
include motd
include ssh
include ntp
}
)不幸地反映了我的名字
公司服务器(所有人都拥有'独特的名字,几乎没有
正则表达式工作的可能性,除了可能在域名上
serverN.test.com
)test.com
中)以方便
包含/排除管理员节点我的选择是什么?
提前致谢。
答案 0 :(得分:1)
如果你不能制定一个正则表达式,那是不幸的。如果test.com
域名已满足您的需求,则应使用
node /.*\.test\.com$/ { ... }
而不是devnode
(这无论如何都没有意义,因为它只与名为 “devnode”的代理匹配。)
如果您的fqdn
混乱,您可能会受益于ENC,例如Foreman或Puppet Enterprise的网络界面。这样的分类器允许您灵活地将类链接到节点。 hiera_include
函数会使Hiera成为简单的ENC。
原谅ENC想法的一个选项当然是枚举fqdn
中的nodes.pp
,可能会引入另一个继承层。
node fqdn1.test.com inherits devnode { ... }
node fqdn2.test.com inherits devnode { ... }
...
答案 1 :(得分:0)
可以在site.pp中为每个定义指定几个节点名称:
node 'www1.example.com', 'www2.example.com', 'www3.example.com' {
include common
include apache, squid
}
免责声明:不确定Puppet 2.7中是否提供此功能