マニフェストから Puppet 構成変数にアクセスしますか?

マニフェストから Puppet 構成変数にアクセスしますか?

Puppet マニフェスト内から Puppet マスター構成変数 (confdir、masterport など) にアクセスすることは可能ですか?

答え1

方法は3つあります。

  1. 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のこのスレッド

関連情報