抑制puppet中的具体错误/警告信息?

运行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"; } 

请注意,服务资源抱怨失败的依赖关系。