Je souhaite imprimer des messages et des variables lorsque Puppet s'exécute .J'ai vu qu'il existe deux fonctions qui pourraient aider mais ne peuvent pas vraiment les utiliser . Mon fichier site.pp
:
info "running site.pp info"
debug "running site.pp debug"
Quand je cours sur le client:
puppet -t
Je ne reçois pas ces empreintes.
Voici le script de marionnettes avec toutes les fonctions disponibles du journal de marionnettes.
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")
}
Sortie du script (sur la marionnette 2.7):
NB: les couleurs de la marionnette 3.x peuvent changer (toutes les erreurs seront imprimées en rouge)!
de la fonction Marionnette documentation
info: Log a message on the server at level info.
debug: Log a message on the server at level debug.
Vous devez consulter votre fichier journal puppetmaster pour trouver vos messages d’information/débogage.
Vous pouvez utiliser
notify{"The value is: ${yourvar}": }
produire une sortie vers votre client fantoche
Si vous souhaitez notifier un utilisateur avec différents types de messages tels que des informations, des messages de débogage, des erreurs, des avertissements, des alertes, des messages critiques et des messages d’urgence, utilisez le métaparamètre "loglevel" dans les ressources de marionnettes.
Avec l'utilisation de loglevel, vous pouvez utiliser les mêmes ressources pour différents types de messages d'erreur.
par exemple, pour produire des messages de débogage, vous pouvez l'utiliser comme,
notify {"debug message":
loglevel => debug,
}
Juste comme alternative, vous pouvez envisager d'utiliser des exécutifs ... (je ne le recommanderais pas cependant)
exec { 'this will output stuff':
path => '/bin',
command => 'echo Hello World!',
logoutput => true,
}
Ainsi, lorsque vous exécutez marionnette, vous devriez trouver une sortie comme celle-ci:
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 première ligne enregistrée en sortie.
Cela fait la tâche pour moi. J'utilise cela pour vérifier les vars et afficher les notifications.
notify {"hello world $var1":}
Voici également la documentation sur le site Web de Puppet: http://docs.puppetlabs.com/learning/ordering.html#notify-and-subscribe
Manière plus simple, utilisez notice .. Par exemple Notice ("foo.pp fonctionne") Ou Notice ($ foo)
Vous pouvez aller plus loin et entrer dans le code de la marionnette en utilisant un point d'arrêt.
http://logicminds.github.io/blog/2017/04/25/break-into-your-puppet-code/
Cela ne fonctionnerait qu'avec une application marionnette ou en utilisant un test rspec. Ou vous pouvez taper manuellement votre code dans la console du débogueur. Remarque: la marionnette doit toujours savoir où se trouve le code de votre module si vous ne l’avez pas encore définie.
gem install puppet puppet-debugger
puppet module install nwops/debug
cat > test.pp <<'EOF'
$var1 = 'test'
debug::break()
EOF
Devrait montrer quelque chose comme.
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:>>
Avez-vous essayé ce qui est sur l'échantillon. Je suis nouveau à cela, mais voici la commande: marionnette --test --trace --debug. J'espère que ça aide.
Si, comme moi, vous n'avez pas accès au maître des marionnettes et avez besoin d'imprimer des journaux de débogage pour inspecter les variables sur votre ordinateur client de marionnettes, vous pouvez essayer d'écrire dans un fichier à partir de votre code de marionnette lui-même:
file { '/tmp/puppet_debug.log':
content => inline_template('<%= @variable_x.to_s %>'),
}