在 Puppet 中对节点进行分组

在 Puppet 中对节点进行分组

在我的 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 描述。

相关内容