我已经安装了 puppet-dashboard 并注意到我所有的 augeas 任务都显示为“已更改”。我希望 augeas 自动检查要设置的值是否已经设置,在这种情况下什么都不做。
我的食谱:
$puppet_conf = "/etc/puppet/puppet.conf"
file { "${puppet_conf}": }
augeas { "puppet_conf":
context => "/files/${puppet_conf}/",
changes => [
"set agent/report true",
],
require => File["${puppet_conf}"],
}
之前已经设置值时正常运行:
info: Applying configuration version '1363882751'
debug: Augeas[puppet_conf](provider=augeas): Opening augeas with root /, lens path , flags 0
debug: Augeas[puppet_conf](provider=augeas): Closed the augeas connection
debug: Augeas[puppet_conf](provider=augeas): Opening augeas with root /, lens path , flags 0
debug: Augeas[puppet_conf](provider=augeas): sending command 'set' with params ["/files//etc/puppet/puppet.conf/agent/report", "true"]
debug: Augeas[puppet_conf](provider=augeas): Closed the augeas connection
notice: /Stage[main]/Puppet_agent/Augeas[puppet_conf]/returns: executed successfully
文件的日期/时间没有改变,所以它显然不会改变文件。虽然,puppet-dashboard 将文件显示为“已更改”。如果我输入一个“onlyif”,那部分将不会出现,但我不想在 onlyif 中重复所有内容,而且我一次只能设置一个配置选项。
Debian Squeeze
Puppet 2.6.2
Augeas 0.10.0
配置它的正确方法是什么?
感谢您提供版本信息。看起来你遇到了 Puppet bug #11414,这是由于新的 Augeas 0.10.0 和旧版本的 Puppet 的组合。
Puppet 中的提供程序将 Augeas 版本号误解为非常旧的版本(字符串而不是正确的版本比较)并且它无法按预期工作。
您需要使用来自squeeze-backports(或Puppet Labs repo)的 Puppet 2.7.18 修复了错误,或者使用旧版或更新版的 Augeas(1.0.0 或 0.9.0)。