puppet - poner - porque mi impresora epson gasta mucha tinta
¿Cómo imprimir algo al ejecutar el cliente Puppet? (10)
Quiero imprimir mensajes y variables cuando se ejecuta Puppet. Vi que hay dos funciones que podrían ayudar pero que realmente no podrían usarlas. Mi archivo site.pp
:
info "running site.pp info"
debug "running site.pp debug"
Cuando corro en el cliente:
puppet -t
No consigo esas impresiones.
¿Has probado lo que está en la muestra? Soy nuevo en esto, pero aquí está el comando: puppet --test --trace --debug. Espero que esto ayude.
Aquí está el script de títeres con todas las funciones de registro de títeres disponibles.
log_levels.pp
node default {
notice("try to run this script with -v and -d to see difference between log levels")
notice("function documentation is available here: http://docs.puppetlabs.com/references/latest/function.html")
notice("--------------------------------------------------------------------------")
debug("this is debug. visible only with -d or --debug")
info("this is info. visible only with -v or --verbose or -d or --debug")
alert("this is alert. always visible")
crit("this is crit. always visible")
emerg("this is emerg. always visible")
err("this is err. always visible")
warning("and this is warning. always visible")
notice("this is notice. always visible")
#fail will break execution
fail("this is fail. always visible. fail will break execution process")
}
Salida de guión (en títere 2.7):
NB: los colores de las marionetas 3.x pueden cambiar (todos los errores se imprimirán en rojo).
Como alternativa, puedes considerar usar ejecutivos ... (aunque no lo recomendaría)
exec { ''this will output stuff'':
path => ''/bin'',
command => ''echo Hello World!'',
logoutput => true,
}
Así que cuando corras títere debes encontrar alguna salida así:
notice: /Stage[main]//Exec[this will output stuff]/returns: Hello World!
notice: /Stage[main]//Exec[this will output stuff]/returns: executed successfully
notice: Finished catalog run in 0.08 seconds
La primera línea se está registrando salida.
De la documentation función Puppet.
info: Log a message on the server at level info.
debug: Log a message on the server at level debug.
Debe buscar un archivo de registro de su puppetmaster para encontrar sus mensajes de información / depuración.
Puedes utilizar
notify{"The value is: ${yourvar}": }
para producir algo de salida a su cliente títere
Eso hace la tarea por mí. Lo uso para comprobar vars y mostrar notificaciones ...
notify {"hello world $var1":}
Aquí también se encuentra la documentación en el sitio web de Puppet: http://docs.puppetlabs.com/learning/ordering.html#notify-and-subscribe
Manera más fácil, usar aviso. por ejemplo, aviso ("foo.pp works") o aviso ($ foo)
Podría ir un paso más allá e ingresar el código títere utilizando un punto de interrupción.
http://logicminds.github.io/blog/2017/04/25/break-into-your-puppet-code/
Esto solo funcionaría con la aplicación de títeres o el uso de una prueba rspec. O puede escribir manualmente su código en la consola del depurador. Nota: Puppet aún necesita saber dónde se encuentra el código de su módulo si aún no lo ha configurado.
gem install puppet puppet-debugger
puppet module install nwops/debug
cat > test.pp <<''EOF''
$var1 = ''test''
debug::break()
EOF
Debería mostrar algo así.
puppet apply test.pp
From file: test.pp
1: $var1 = ''test''
2: # add ''debug::break()'' where you want to stop in your code
=> 3: debug::break()
1:>> $var1
=> "test"
2:>>
Puede ejecutar el cliente de esta manera ...
puppet agent --test --debug --noop
Con ese comando obtienes toda la salida que puedes obtener.
ayuda agente de títeres* --test:
Enable the most common options used for testing. These are ''onetime'',
''verbose'', ''ignorecache'', ''no-daemonize'', ''no-usecacheonfailure'',
''detailed-exitcodes'', ''no-splay'', and ''show_diff''.
NOTA: No es necesario incluir --verbose
cuando usa el interruptor --test|-t
, implica el --verbose
también.
Si desea notificar al usuario con diferentes tipos de mensajes como información, depuración, error, advertencia, alertas, mensajes críticos y de emergencia, utilice el metaparámetro ''loglevel'' en los recursos de títeres.
Con el uso de loglevel puede usar los mismos recursos para diferentes tipos de mensajes de error.
por ejemplo, para producir mensajes de depuración puede usarlo como,
notify {"debug message":
loglevel => debug,
}
Si, como yo, no tiene acceso a Puppet Master y necesita imprimir registros de depuración para inspeccionar las variables en su máquina cliente de Puppet, puede intentar escribir en un archivo desde su propio código de Puppet:
file { ''/tmp/puppet_debug.log'':
content => inline_template(''<%= @variable_x.to_s %>''),
}