Arrays 木偶阵列迭代如何实现?

Arrays 木偶阵列迭代如何实现?,arrays,iteration,exec,puppet,Arrays,Iteration,Exec,Puppet,//假设事实my_env=>[shared1、shared2、shared3] define myResource { file { "/var/tmp/$name": ensure => directory, mode => 0600, } user { $name: ensure => present, } } myResource { $my_env: } 我试过了,但是$name得到了整个数组 我做错了什么吗?如果您使用

//假设事实my_env=>[shared1、shared2、shared3]

define myResource {
 file { "/var/tmp/$name":
    ensure => directory,
    mode   => 0600,
  } 
  user { $name:
    ensure => present,
  }
 }
 myResource { $my_env: }
我试过了,但是$name得到了整个数组


我做错了什么吗?

如果您使用的是Facter
1.x
,那么从事实代码返回的所有值都会隐式转换为字符串。在数组的情况下,所有元素都是关联的

作为一种解决方法,您可以让事实进行适当的连接,例如,用逗号连接值

setcode do
  result = []
  # ... code to store an array in #{result}
  result * ','
end
在清单中,可以使用函数将其转换回正确的数组

$my_env_arr = split($::my_env, ',')
my_resource { $my_env_var: }
数组事实只与Facter
2.x一起工作

在第二个代码示例的第二行,您是否打算使用

myu资源{$myu环境变量:}

myu资源{$myu env\u arr:}

我之所以这样问,是因为后者对我来说更有意义,而且变量名将与该示例第一行中显示的内容相匹配