我有这个清单:
$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是正确的。
该如何解决?
答案 0 :(得分:2)
我只想将此清单应用于领班主持人小组,该如何正确执行?
在Puppet端,您创建类,描述如何管理计算机总体配置的适当子单元,并将这些类组织为模块。此类问题的细节太宽泛,无法涵盖在SO答案中–类似于回答“我如何用[语言X]编程?”。
已经准备好您的课程,任务是指示Puppet将哪些课程分配给每个节点。这称为“分类”。 Node blocks是执行分类的一种方法。另一个是external node classifiers(ENC)。您的网站清单中还有基于普通顶级Puppet代码的替代方法。这些都不是排他的。
但是,如果使用The Foreman运行Puppet,则应将Puppet配置为使用Foreman提供的ENC。然后,您使用Foreman向节点和/或节点组分配(人偶)类,然后Foreman通过其ENC将详细信息传达给Puppet。完全不需要人偶一侧的任何分类代码。