web-dev-qa-db-ja.com

Puppetクライアントを実行しているときに何かを印刷する方法は?

Puppetの実行時にメッセージと変数を出力したい。役立つかもしれないが実際にはそれらを使用できなかった2つの関数があることを見ました。僕の site.ppファイル:

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

クライアントで実行すると:

puppet -t

私はそれらの版画を手に入れません。

47
Iftach Bar

以下は、利用可能なすべてのパペットログ機能を備えたパペットスクリプトです。

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

}

スクリプト出力(パペット2.7): different log levels colors

注意:puppet 3.xの色は変わる可能性があります(すべてのエラーは赤で印刷されます)!

57
Aleksey Timohin

puppet関数から ドキュメント

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

Info/debugメッセージを見つけるには、puppetmasterログファイルを調べる必要があります。

使用してもよい

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

パペットクライアントに出力を生成する

52
Michael Gisbers

情報、デバッグ、エラー、警告、アラート、クリティカルおよび緊急メッセージなどのさまざまなタイプのメッセージでユーザーに通知する場合は、Puppetリソースで「loglevel」メタパラメーターを使用します。

Loglevelを使用すると、異なるタイプのエラーメッセージに同じリソースを使用できます。

たとえば、デバッグメッセージを生成するために使用できます。

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

別の方法として、execの使用を検討することもできます...(ただしお勧めしません)

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

したがって、puppetを実行すると、次のような出力が見つかるはずです。

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

ログ出力される最初の行。

8
Sekm

それは私のための仕事をします。これを使用して、変数を確認し、通知を表示します。

notify {"hello world $var1":}

PuppetのWebサイトにもドキュメントがあります。 http://docs.puppetlabs.com/learning/ordering.html#notify-and-subscribe

5
maths

より簡単な方法、通知を使用します。例えばnotice( "foo.pp works")またはnotice($ foo)

1
sorabh

さらに一歩進んで、ブレークポイントを使用してパペットコードに侵入することができます。

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

これは、パペット適用またはrspecテストを使用した場合にのみ機能します。または、デバッガコンソールにコードを手動で入力できます。注:まだ設定していない場合、puppetはモジュールコードの場所を知る必要があります。

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

のようなものを表示する必要があります。

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

サンプルの内容を試しましたか。これは初めてですが、ここにコマンドがあります:puppet --test --trace --debug。これがお役に立てば幸いです。

0
Efox

私のように、パペットマスターにアクセスできず、パペットクライアントマシンの変数を検査するためにデバッグログを出力する必要がある場合は、パペットコード自体からファイルへの書き込みを試すことができます。

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