web-dev-qa-db-fra.com

Comment imprimer quelque chose en exécutant le client Puppet?

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.

46
Iftach Bar

Voici le script de marionnettes avec toutes les fonctions disponibles du journal de marionnettes.

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")

}

Sortie du script (sur la marionnette 2.7): different log levels colors

NB: les couleurs de la marionnette 3.x peuvent changer (toutes les erreurs seront imprimées en rouge)!

56
Aleksey Timohin

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

51
Michael Gisbers

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,
    }
16
Rahul Khengare

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.

8
Sekm

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

5
maths

Manière plus simple, utilisez notice .. Par exemple Notice ("foo.pp fonctionne") Ou Notice ($ foo)

1
sorabh

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:>>

https://www.puppet-debugger.com

0
Corey Osman

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.

0
Efox

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 %>'),
}
0
Srikanth