我想在已定义类型的实例中引用变量.例如,我可以做什么来引用$x
和$y
foo a
吧b
?
define foo($x, $y) {
}
define bar($foo) {
notify { "${::$foo::x}": } # <- how to make this reference work?
}
foo { 'a':
x => 'oh bar may you reference me',
y => 'please'
}
bar { 'b':
foo => Foo['a'],
require => Foo['a']
}
Run Code Online (Sandbox Code Playgroud)
我希望这个工作的原因是foo实例可能包含许多值,我不想重复这些值可能需要它们的每个资源.我不是一次又一次地传递这些值,而是重复自己,而是将参考传递给他们的容器.
我一直在寻找并尝试了很多东西,但似乎无法在任何地方找到这个问题的答案.我知道可以修改属性,引用资源和读取类属性,但是是否可以读取资源/定义类型的属性?如果不是那么最好的工作呢?
我实际上刚刚发现Puppetlab的stdlib模块包含一个getparam函数,可以用来解决这个问题.
所以这里终于解决了我自己的问题:
define foo($x, $y) {
}
define bar($foo) {
notify { getparam(Foo[$foo], 'x'): }
notify { getparam(Foo[$foo], 'y'): }
}
foo { 'a':
x => 'oh bar may you reference me',
y => 'please'
}
bar { 'b':
foo => 'a'
}
Run Code Online (Sandbox Code Playgroud)
请注意,似乎不需要require => Foo['a']
定义中的内容Bar['b']
.
归档时间: |
|
查看次数: |
7581 次 |
最近记录: |