¿Cómo get un código de salida distinto de cero de Puppet cuando no se puede aplicar la configuration?

He intentado la siguiente configuration de Puppet para deshabilitar la contraseña de root :

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

Pero después de aplicarlo sin advertencias o posts de error , aún pude su - con la contraseña anterior. Solo después de inspeccionar la salida de debugging se hizo claro por qué:

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

Wat. Sé cómo solucionar esto ( sudo pacman --sync --needed --refresh ruby-shadow ), pero ese no es el punto. ¿Cómo obligo a Puppet a bloquearse y grabarse cuando no puede aplicar mi configuration , al less dando un código de salida distinto de cero? --detailed-exitcodes no ayuda.

Solución: la siguiente function solo funciona si se ejecuta dos veces : en la primera ejecución ignora la input del user al comstackr el catálogo.

 class users { package { 'ruby-shadow': ensure => present, } user { 'root': password => '*', require => Package['ruby-shadow'], } } 

Puede usar la puppet apply --help para ver todas las opciones disponibles. Este es el que le interesa:

 * --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. 

En tu caso específico:

 # puppet apply --detailed-exitcodes --debug --modulepath modules manifests/host.pp