2

私は次のマニフェストを持っています:

define foo($var) {
    file { $var: }
    $barclass::store += $var
}

class barclass {
    $store = []
    foo {
        "test1": var => "test1",
        "test2": var => "test2",
    }

    file { "myfile": content => template("puppet:///files/myfile.erb"); }
}

そして次のerbテンプレート:

<% store.each { |i| -%> 
<%= i + " " -%> 
<% } -%> 

ここでの私の意図は、foo型のパラメーターとして使用されるすべての$var変数を収集することです。そして、それらをmyfile.erbテンプレートで提供します。私の例では、 $store変数が使用されました。

この例は機能しません。私は何が間違っていますか?

同じことを達成するためのより良い方法はありますか?基本的に、あるタイプで使用されるパラメーターを収集し、それらをいくつかのテンプレートで提供する必要があります。

4

1 に答える 1

3

puppet マニフェストに設定された変数に直接アクセスすることはできません (ファクト ファクトのみ)。必要なのは scope.lookupvar です。

scope.lookupvar('yourmodulename::barclass::store')

あるいは単に

scope.lookupvar('barclass::store')

モジュールでない場合

それで

<% scope.lookupvar('barclass::store').each { |i| -%> 
<%= i + " " -%> 
<% } -%> 
于 2011-08-13T14:21:41.133 に答える