How to iterate over an array in Puppet
//假设事实my_env => [shared1,shared2,shared3]
define myResource {
file { "/var/tmp/$name":
ensure => directory,
mode => 0600,
}
user { $name:
ensure => present,
}
}
myResource { $my_env: }
我试过了,但是$ name得到了整个数组。
我做错了吗?
答案 0 :(得分:1)
如果您使用的是Facter 1.x
,则从事实代码返回的所有值都会隐式转换为字符串。对于数组,所有元素都是连续的。
作为一种解决方法,您可以使您的事实做适当的连接,例如用逗号加入值。
setcode do
result = []
# ... code to store an array in #{result}
result * ','
end
在您的清单中,您可以使用split函数将其重新转换为正确的数组。
$my_env_arr = split($::my_env, ',')
my_resource { $my_env_var: }
数组事实只需使用Facter 2.x
。
答案 1 :(得分:0)
在第二个代码示例的第二行,您的意思是使用
my_resource { $my_env_var: }
或
my_resource { $my_env_arr: }
我问,因为后者对我来说更有意义,变量名称将与该示例第一行中显示的名称相匹配。