Como obter código de saída diferente de zero do Puppet quando a configuração não pode ser aplicada?

3

Eu tentei a seguinte configuração do Puppet para desativar a senha do root :

class users {
  user { 'root':
    password => '*',
  }
}

Mas depois de aplicá-lo sem avisos ou mensagens de erro ainda posso su - com a senha antiga. Somente depois de inspecionar a saída de depuração ficou claro o motivo:

# puppet apply --debug --modulepath modules manifests/host.pp
[...]
Debug: Failed to load library 'shadow' for feature 'libshadow'
[...]

Wat. Eu sei como consertar isso ( sudo pacman --sync --needed --refresh ruby-shadow ), mas esse não é o ponto. Como faço para forçar o Puppet a travar e a queimar quando ele não pode aplicar minha configuração , no mínimo dando um código de saída diferente de zero? --detailed-exitcodes não ajuda.

Solução alternativa: O seguinte somente funciona se for executado duas vezes - na primeira execução, ele ignorará a entrada user ao compilar o catálogo.

class users {
  package { 'ruby-shadow':
    ensure => present,
  }

  user { 'root':
    password => '*',
    require => Package['ruby-shadow'],
  }
}
    
por l0b0 31.10.2014 / 22:55

1 resposta

-2

Você pode usar puppet apply --help para ver todas as opções disponíveis. Este é o que você está interessado:

* --detailed-exitcodes:
  Provide transaction information via exit codes. If this is enabled, an exit
  code of '2' means there were changes, an exit code of '4' means there were
  failures during the transaction, and an exit code of '6' means there were both
  changes and failures.

No seu caso específico:

# puppet apply --detailed-exitcodes --debug --modulepath modules manifests/host.pp
    
por 31.10.2014 / 23:03