lepole Asked: 2009-06-05 07:45:49 +0800 CST2009-06-05 07:45:49 +0800 CST 2009-06-05 07:45:49 +0800 CST puppet - 在 nodes.pp 中定义通配符主机 772 有没有办法在 puppetmaster 的 nodes.pp 中定义通配符主机 假设我希望一个域中的所有主机都接收一组类,我可以执行以下操作: # nodes.pp # node basenode { include admina, adminb, admic } node "*.acme.com" { include adminc } linux puppet 3 个回答 Voted Pheezy 2009-09-10T06:03:33+08:002009-09-10T06:03:33+08:00 现在在 Puppet 0.25 中可以使用正则表达式,所以你想要的将是可能的: node /^(foo|bar)\.example\.com$/ { include blah } Best Answer Stick 2009-06-05T10:15:37+08:002009-06-05T10:15:37+08:00 不是这种方式。您可以创建一个适用于任何签名客户端的“默认”节点。 node "default" { include foo } 但是你只能有 1 个默认值。如果您想复制您描述的功能,您可以使用 external_nodes 分类方法。基本上,您编写一个脚本,在客户端连接时返回有效的 yaml。该脚本可以随心所欲地执行,检查 fqdn,查询数据库,点击 ldap 等。 Cristi Măgherușan 2010-01-02T17:26:31+08:002010-01-02T17:26:31+08:00 到目前为止,很少有发行版发布 0.25,所以在我的 Centos5 中,我从 EPEL 仓库获得了 2.24.8,我不得不为我的工作节点做这样的事情,主机名像 wn10.example.com: node default { $node_type = regsubst($hostname, '^([a-z]+).*$', '\1') case $node_type{ wn: {include worker_node} default: {include generic_node} } }
现在在 Puppet 0.25 中可以使用正则表达式,所以你想要的将是可能的:
不是这种方式。您可以创建一个适用于任何签名客户端的“默认”节点。
但是你只能有 1 个默认值。如果您想复制您描述的功能,您可以使用 external_nodes 分类方法。基本上,您编写一个脚本,在客户端连接时返回有效的 yaml。该脚本可以随心所欲地执行,检查 fqdn,查询数据库,点击 ldap 等。
到目前为止,很少有发行版发布 0.25,所以在我的 Centos5 中,我从 EPEL 仓库获得了 2.24.8,我不得不为我的工作节点做这样的事情,主机名像 wn10.example.com: