2015-10-29 101 views
0

我有一个二维配置变量集:木偶2D迭代

$environments = [ 
    { 
    'name' => 'foo', 
    'port' => '1234', 
    }, 
    { 
    'name' => 'bar', 
    'port' => '4321', 
    }, 
] 

是否可以遍历数组过来,从内阵列使用的变量。例如。我想为每个名称创建一个用户帐户。

# How to get each name? 
user { $environment: 
    ensure => 'present' 
} 
+0

您目前似乎(通过利用密钥port''的'')哈希的数组涉及到网络,然后询问如何创建用户。我没有看到连接。 –

+0

无论如何,你使用哪个版本的Puppet?它造成了相当大的差异。 –

回答

0

Puppet 4提供了built-in functions用于遍历聚合值以及与之一起使用的类似Ruby的新语法。当未来的解析器被启用时,这些在最新版本的Puppet 3中也是可用的。如果使用这样的木偶,你可以接近这样的问题:

each($environments) |$e| { 
    foo { $e['name']: port => $e['port'] } 
} 
+0

这解决了我的问题,为更新的木偶版本。对于旧版本,我必须创建一个“定义”功能。这个函数只会执行一个任务并遍历数组。 – Topiks

0

我从来没有真正与木偶迭代工作。

但是从hash创建多个资源(注意:哈希没有阵列),您可以使用create_resources()功能。

documentation就是一个很好的例子。

您的hash不能包含parametersresource不理解寿。在您的示例中,port不适用于user资源,因为它无法理解该参数。

希望这有助于一点无论如何。

+0

我可能没有办法帮助我做所有事情,但对于某些事情来说,它似乎是一个可靠的解决方案。我会研究它,thx。 – Topiks