运行Puppet清单时可以抑制特定的错误信息吗?
如果文件/ etc / sysconfig / iptables存在,以下片段将激活并启动iptables。 它工作正常,但“检查iptables规则文件”生成一个错误消息,我想隐藏。 我检查了(v2.7)文档exec资源types和谷歌search的选项,但没有运气。
cat init.pp service { "iptables": enable => true, ensure => running, require => Exec["Check for iptables rulesfile"]; } exec { "Check for iptables rulesfile": command => "/usr/bin/test -f /etc/sysconfig/iptables", returns => "0"; } puppet apply --debug init.pp ... err: /Stage[main]//Exec[Check for iptables rulesfile]/returns: change from notrun to 0 failed: /usr/bin/test -f /etc/sysconfig/iptables returned 1 instead of one of [0] at init.pp:12 ... warning: /Stage[main]//Service[iptables]: Skipping because of failed dependencies
有什么想法吗?
PS是的,我知道这不是用Puppetpipe理防火墙规则的“正确”方法。
我想知道,如果/ etc / sysconfig / iptables存在,您只需要启用并运行iptables服务。 一个简单的select是创build一个名为iptables的自定义事实(或者任何让你感到痒的东西)并使用该布尔值来决定是否执行服务块。 例如:
在你的模块中创build一个自定义事实,在$ module_name / lib / facter中:
Facter.add("iptables") do setcode do if Facter::Util::Resolution.exec('test -f /etc/sysconfig/iptables') then "true" else "false" end end end
然后,在你的服务块有这样的东西:
if $::iptables == "true" { service { "iptables": enable => true, ensure => running, } }
如果该文件存在,这将只执行该服务块。 我想这就是你想要的。
Boscoe描绘了一个非常好的解决scheme。
你的破解也可以,使用loglevel metaparameter。
exec { "Check for iptables rulesfile": command => "/usr/bin/test -f /etc/sysconfig/iptables", loglevel => "debug", returns => "0"; }
请注意,服务资源将抱怨失败的依赖关系。