puppet - 在 nodes.pp 中定义通配符主机

puppet - 在 nodes.pp 中定义通配符主机

有没有办法在 puppetmaster 的 nodes.pp 中定义通配符主机

假设我希望一个域中的所有主机都接收一组类,我可以这样做吗:

# nodes.pp
#

node basenode {
  include  admina, adminb, admic
  }


node "*.acme.com" {
    include adminc
    }

答案1

不是这样。您可以创建一个适用于任何已签名客户端的“默认”节点。

node "default" {
   include foo
}

但您只能有一个默认值。如果您想复制您描述的功能,您可以使用 external_nodes 分类方法。基本上,您编写一个脚本,当客户端连接时返回有效的 yaml。该脚本可以按照您的意愿执行操作,检查 fqdn、查询数据库、命中 ldap 等。

答案2

现在 Puppet 0.25 中可以使用正则表达式,因此您想要的功能是可以实现的:

node /^(foo|bar)\.example\.com$/ {
include blah
}

答案3

到目前为止,很少有发行版发布 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}
    }
}

相关内容