【问题标题】:puppet array iteration how to?puppet数组迭代如何?
【发布时间】:2014-09-05 20:40:48
【问题描述】:

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

我做错了吗?

【问题讨论】:

    标签: arrays iteration exec puppet


    【解决方案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: }
    

    数组事实 Just Work with Facter 2.x.

    【讨论】:

      【解决方案2】:

      @felix-frank

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

      my_resource { $my_env_var: }

      my_resource { $my_env_arr: }

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-20
        • 1970-01-01
        • 2019-01-02
        • 2018-04-05
        • 1970-01-01
        相关资源
        最近更新 更多