puppet数组迭代怎么样?

时间:2014-09-05 20:40:49

标签: arrays iteration exec puppet

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得到了整个数组。

我做错了吗?

2 个答案:

答案 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)

@felix-frank

在第二个代码示例的第二行,您的意思是使用

my_resource { $my_env_var: }

my_resource { $my_env_arr: }

我问,因为后者对我来说更有意义,变量名称将与该示例第一行中显示的名称相匹配。