Suprimir mensagem específica de erro / aviso no fantoche?

2

É possível suprimir mensagens de erro específicas ao executar um manifesto Puppet?

O trecho a seguir ativa e inicia o iptables se o arquivo / etc / sysconfig / iptables existir. Ele funciona bem, mas "Verificar o arquivo de regras do iptables" gera uma mensagem de erro que gostaria de ocultar. Eu verifiquei o (v2.7) docs as opções do tipo de recurso exec e pesquisei, mas sem sorte.

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

Alguma opinião?

P.S. Sim, estou ciente de que esta não é a maneira "certa" de gerenciar regras de firewall com o Puppet.

    
por Willem 28.07.2014 / 17:29

2 respostas

1

Eu entendo que você quer que o serviço iptables seja ativado e executado somente se o / etc / sysconfig / iptables existir. Uma opção fácil seria criar um fato personalizado chamado iptables (ou qualquer coisa que lhe agrade) e usar esse booleano para decidir se deve ou não executar o bloco de serviço. Por exemplo:

Crie um fato personalizado em seu módulo, em $ 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

Então, no seu bloco de serviço, tem algo parecido com isto:

 if $::iptables == "true" {
   service { "iptables":
     enable  => true,
     ensure  => running,
   }
 }

Isso só executará esse bloco de serviço se esse arquivo existir. Eu acho que é isso que você quer.

    
por 28.07.2014 / 19:33
0

Boscoe esboça uma solução muito boa.

Seu hack pode funcionar também, tente com o metapâmetro loglevel .

exec { "Check for iptables rulesfile":
    command  => "/usr/bin/test -f /etc/sysconfig/iptables",
    loglevel => "debug",
    returns  => "0";
}

Observe que o recurso de serviço irá reclamar sobre dependências com falha.

    
por 29.07.2014 / 02:48

Tags