
Puppet マニフェスト内から Puppet マスター構成変数 (confdir、masterport など) にアクセスすることは可能ですか?
答え1
方法は3つあります。
- Jeff McCune は、まさにこれを実行する優れた関数を github で公開しています。
モジュール Puppet::Parser::Functions 新しい関数(:getconf, :type => :rvalue, :doc => 2010-09-29 getconf関数は、単一の引数、 構成設定を取得し、その設定の値を返します。 これは、--configprintコマンドライン引数に似ています。 この情報を公開する以外は設定を返します 言語に。 END_HEREDOC |args| を実行します args.length != 1 の場合 Puppet::ParseError が発生します ("エラー: getconf() は引数を 1 つしか取りません") 終わり 人形[args[0]] end # do |args| 終了 # モジュール # 終了
これをPuppetサーバーのlibdir()の「getconf.rb」というファイルに入れて/var/puppet/lib/puppet/parser/functions/getconf.rb
、次のようなマニフェストからアクセスします。
# somemanifest.pp
$myvar = getconf("ssldir")
notify {"set ssldir to ${myvar}":}
2. Puppet 2.6 では、設定全体に としてアクセスできるため${settings::somevar}
、さらに簡単になり、マニフェストは次のようになります。
# 26manifest.pp
$myvar = $settings::ssldir
notify {"set ssldir to $myvar":}
3. Puppet 0.25 ではインライン テンプレートを使用できます。
# 25manifest.pp
$myvar = inline_template("<%= Puppet.settings[:ssldir] %>")
notify {"set ssldir to ${myvar}":}
方法2と3はpuppet-usersのこのスレッド