Puppet - 多节点语法

时间:2014-04-22 17:04:58

标签: manifest nodes puppet

我实际上正在运行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
}

没有按预期工作(意思是:motdsshntp模块未应用于{{1}内的节点serverN.test.com节点)。

我之前有以下devnode

site.pp

但是当我想在单个节点上测试特定模块时,它缺乏灵活性。

考虑以下因素:

  1. 我还不想使用ENC(我还在学习Puppet基础知识)
  2. 我想在公司内部保留这个Puppet版本(v2.7x)作为后勤原因
  3. 给出的示例(node /^server[1-4]\.test\.com$/ { include motd include ssh include ntp } )不幸地反映了我的名字 公司服务器(所有人都拥有'独特的名字,几乎没有 正则表达式工作的可能性,除了可能在域名上 serverN.test.com
  4. 我更喜欢显示所有节点名称(在test.com中)以方便 包含/排除管理员节点
  5. 我的选择是什么?

    提前致谢。

2 个答案:

答案 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中是否提供此功能