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 回答