我是 Puppet 的新手,遇到了一些问题,在 Google 上搜索了一段时间,但没有找到匹配的答案。我的问题如下:
我在 /etc/puppet/manifests/site.pp 中定义了全局变量 $puppetserver 如下所示:
case $domain {
/domain2/:{
$puppetserver = "puppetserver2"
include migrate
}
default:{
$puppetserver = "puppetserver3"
}
}
在 manifests/labs/domain2/nodes.pp 中的 domain2 中的服务器节点定义中
node 'server1.domain2.com' {
$puppetserver = "puppetserver3"
}
其中migrate模块用于puppet的迁移,从网上找的如下:
在 modules/migrate/manifests/config.pp 中
class migrate::config {
if $puppetserver == undef {
fail('You must define the targeted Puppet master to perform the migration')
}
augeas { 'puppet.conf.migrate':
context => '/files/etc/puppet/puppet.conf/main',
changes => [
"set server $puppetserver",
]
}
}
由于节点“server1.domain2.com”可以匹配 site.pp 中的 domain2 设置,因此它应用了迁移模块,它应该获取节点块中定义的 $puppetserver 的“puppetserver3”,然后由 Augeas 在“/etc/puppet/puppet.conf”中更新,但实际结果是:它被更新为 site.pp 中定义的 puppetserver2。我不明白为什么覆盖不起作用。您能帮忙检查一下哪里出了问题吗?
并进行测试:
当我尝试将“include migration”模块从 site.pp 移动到 nodes.pp 的节点“server1.domain2.com”{} 块时,它可以按预期工作。