木偶变量作为变量

时间:2012-05-03 03:28:17

标签: puppet

变量名是否可以从变量派生?

$hash01={instance => '01',street => 'blah'}

这适用于调用define:

mydefine { '01': hash => $mod::params::hash01 }

这可以吗? (我对hash var concat感兴趣)

$var='01'

mydefine { $var: hash => $mod::params::hash"$var" }

1 个答案:

答案 0 :(得分:3)

我为此使用了inline_template()和scope.lookupvar():

$mod::params::hash01={instance => '01',street => 'blah'}
$var='01'
$hash_name="mod::params::hash$var"
$hash=inline_template("<%= scope.lookupvar(hash_name) %>")

然而,inline_template总是返回字符串,因此它将返回字符串“streetblahinstance01”,由于您的函数需要哈希值,因此不会起作用。

另一种方法是通过使用哈希数组来避免这个问题。请注意,数组索引从0开始。

$mod::param::hashes=[{instance=>'00',street=>'fooblah'},{instance=>'01',street=>'blah'}]
mydefine { $var : hash => $mod::param::hashes[1] }

请参阅https://blog.kumina.nl/tag/inline_template/