如何在Puppet中使用Foreman主机组?

时间:2018-08-02 13:57:20

标签: puppet foreman

我有这个清单:

$foremanlogin = file('/etc/puppetlabs/code/environments/production/manifests/foremanlogin.txt')
$foremanpass = file('/etc/puppetlabs/code/environments/production/manifests/foremanpass.txt')

$query = foreman({foreman_user => "$foremanlogin",
                  foreman_pass => "$foremanpass",
                  item         => 'hosts',
                  search       => 'hostgroup = "Web Servers"',
filter_result => 'name',
})

$quoted = regsubst($query, '(.*)', '"\1"')
$query6 = join($quoted, ",")

notify{"The value is: ${query6}": }

node ${query6} {

package { 'atop':
    ensure => 'installed',
  }

}

在代理上执行此操作时出现错误:

Server Error: Could not parse for environment production: Syntax error at ''

我的节点块中有错误

node ${query6} {

package { 'atop':
    ensure => 'installed',
  }

}

我看到来自notify的正确输出,我的变量如下所示:

"test-ubuntu1","test-ubuntu2"

以正确的节点清单格式可变。

我不明白怎么了?变量query6是正确的。

该如何解决?

1 个答案:

答案 0 :(得分:2)

  

我只想将此清单应用于领班主持人小组,该如何正确执行?

在Puppet端,您创建,描述如何管理计算机总体配置的适当子单元,并将这些类组织为模块。此类问题的细节太宽泛,无法涵盖在SO答案中–类似于回答“我如何用[语言X]编程?”。

已经准备好您的课程,任务是指示Puppet将哪些课程分配给每个节点。这称为“分类”。 Node blocks是执行分类的一种方法。另一个是external node classifiers(ENC)。您的网站清单中还有基于普通顶级Puppet代码的替代方法。这些都不是排他的。

但是,如果使用The Foreman运行Puppet,则应将Puppet配置为使用Foreman提供的ENC。然后,您使用Foreman向节点和/或节点组分配(人偶)类,然后Foreman通过其ENC将详细信息传达给Puppet。完全不需要人偶一侧的任何分类代码。

另请参阅How does host groups work with foreman?