Puppetの実行時にメッセージと変数を出力したい。役立つかもしれないが実際にはそれらを使用できなかった2つの関数があることを見ました。僕の site.pp
ファイル:
info "running site.pp info"
debug "running site.pp debug"
クライアントで実行すると:
puppet -t
私はそれらの版画を手に入れません。
以下は、利用可能なすべてのパペットログ機能を備えたパペットスクリプトです。
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):
注意:puppet 3.xの色は変わる可能性があります(すべてのエラーは赤で印刷されます)!
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}": }
パペットクライアントに出力を生成する
情報、デバッグ、エラー、警告、アラート、クリティカルおよび緊急メッセージなどのさまざまなタイプのメッセージでユーザーに通知する場合は、Puppetリソースで「loglevel」メタパラメーターを使用します。
Loglevelを使用すると、異なるタイプのエラーメッセージに同じリソースを使用できます。
たとえば、デバッグメッセージを生成するために使用できます。
notify {"debug message":
loglevel => debug,
}
別の方法として、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
ログ出力される最初の行。
それは私のための仕事をします。これを使用して、変数を確認し、通知を表示します。
notify {"hello world $var1":}
PuppetのWebサイトにもドキュメントがあります。 http://docs.puppetlabs.com/learning/ordering.html#notify-and-subscribe
より簡単な方法、通知を使用します。例えばnotice( "foo.pp works")またはnotice($ foo)
さらに一歩進んで、ブレークポイントを使用してパペットコードに侵入することができます。
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:>>
サンプルの内容を試しましたか。これは初めてですが、ここにコマンドがあります:puppet --test --trace --debug。これがお役に立てば幸いです。
私のように、パペットマスターにアクセスできず、パペットクライアントマシンの変数を検査するためにデバッグログを出力する必要がある場合は、パペットコード自体からファイルへの書き込みを試すことができます。
file { '/tmp/puppet_debug.log':
content => inline_template('<%= @variable_x.to_s %>'),
}