webentwicklung-frage-antwort-db.com.de

Wie kann ich etwas drucken, wenn Sie einen Puppet-Client ausführen?

Ich möchte Meldungen und Variablen ausdrucken, wenn Puppet ausgeführt wird ..__ Ich habe gesehen, dass es zwei Funktionen gibt, die helfen könnten, aber sie nicht wirklich verwenden könnten . Meine site.pp-Datei:

info "running site.pp info"
debug "running site.pp debug"

Wenn ich auf dem Client laufe:

puppet -t

Ich bekomme diese Abzüge nicht.

46
Iftach Bar

Hier ist das Marionettenskript mit allen verfügbaren Marionettenprotokollfunktionen.

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

}

Skriptausgabe (auf Marionette 2.7): different log levels colors

NB: Farben von Puppet 3.x können sich ändern (alle Fehler werden rot gedruckt)!

56
Aleksey Timohin

aus der Marionettenfunktion Dokumentation

info: Log a message on the server at level info.
debug: Log a message on the server at level debug.

Sie müssen in Ihrem Puppetmaster-Logfile nach Ihren Info-/Debug-Nachrichten suchen.

Sie können verwenden

notify{"The value is: ${yourvar}": }

, um etwas für Ihren Puppenkunden zu produzieren

51
Michael Gisbers

Wenn Sie Benutzer mit verschiedenen Arten von Nachrichten wie Informationen, Debugging, Fehler, Warnungen, Warnungen, kritischen Nachrichten und Notfallnachrichten benachrichtigen möchten, verwenden Sie "loglevel" -Metaparameter in den Marionettenressourcen.

Bei Verwendung von Loglevel können Sie dieselben Ressourcen für verschiedene Arten von Fehlermeldungen verwenden.

b. zum Erstellen von Debug-Meldungen können Sie es als verwenden,

 notify {"debug message":
      loglevel => debug,
    }
16
Rahul Khengare

Als Alternative können Sie die Verwendung von Execs in Betracht ziehen ... (ich würde es jedoch nicht empfehlen)

exec { 'this will output stuff':
  path      => '/bin',
  command   => 'echo Hello World!',
  logoutput => true,
}

Wenn Sie also Marionette ausführen, sollten Sie eine Ausgabe wie diese finden:

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

Die erste Zeile wird protokolliert.

8
Sekm

Das macht die Aufgabe für mich. Ich verwende das, um vars zu überprüfen und Benachrichtigungen anzuzeigen.

notify {"hello world $var1":}

Hier ist auch die Dokumentation zur Puppet-Website: http://docs.puppetlabs.com/learning/ordering.html#notify-and-subscribe

5
maths

Einfachere Art und Weise, verwenden Sie den Hinweis . Z. B

1
sorabh

Sie könnten noch einen Schritt weitergehen und mit einem Haltepunkt in den Code der Marionette einbrechen.

http://logicminds.github.io/blog/2017/04/25/break-into-your-puppet-code/

Dies funktioniert nur mit Marionettenanwendung oder mit einem Rspec-Test. Oder Sie können Ihren Code manuell in die Debugger-Konsole eingeben. Hinweis: Marionette muss noch wissen, wo sich Ihr Modulcode befindet, wenn Sie noch nicht festgelegt haben.

gem install puppet puppet-debugger 
puppet module install nwops/debug
cat > test.pp <<'EOF'
$var1 = 'test'
debug::break()
EOF

Sollte so etwas zeigen.

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

Hast du probiert was auf der Probe steht. Ich bin neu in diesem Bereich, aber hier ist der Befehl: puppet --test --trace --debug. Ich hoffe das hilft.

0
Efox

Wenn Sie wie ich keinen Zugriff auf den Marionettenmaster haben und Debug-Protokolle drucken müssen, um Variablen auf Ihrem Marionetten-Client-Computer zu untersuchen, können Sie versuchen, aus Ihrem Puppencode selbst in eine Datei zu schreiben:

file { '/tmp/puppet_debug.log':
  content => inline_template('<%= @variable_x.to_s %>'),
}
0
Srikanth