木偶:不止一个数组传递给一个定义?

我可以理解,根据http://docs.puppetlabs.com/guides/language_guide.html我可以传递一个数组的定义。

define php::pear() { package { "`php-${name}": ensure => installed } } php::pear { ['ldap', 'mysql', 'ps', 'snmp', 'sqlite', 'tidy', 'xmlrpc']: } 

但是,有没有办法让我可以通过多个数组来做同样的事情? 例如,如果我想安装一些梨库,有些缺席,我可以这样做吗?

 define php::pear($ensure) { package { "`php-${name}": ensure => $ensure } } php::pear { ['ldap', 'mysql', 'ps', 'snmp', 'sqlite', 'tidy', 'xmlrpc']: ensure => ['installed', 'installed', 'absent', 'absent', 'installed', 'installed', 'installed'] } 

首先,是这样的可能,还是有更好的方式做这样的multidimensional array或东西?

任何帮助将不胜感激,我发现傀儡文件在这方面缺乏一点。

干杯

我不认为你真的可以做你正在谈论的事情。 你最终会传递相同的大数组到两个东西,在你的例子中,它看起来像你想一次遍历两个数组。

更重要的是,即使你能做到,那真是难看又难读。 需要仔细阅读才能确定哪些事情应该是缺席或现在。

下面的语法将与puppet一起工作,读起来容易得多而不会混淆,稍后更容易做出修改,而且实际上可能更less的字符:

 php::pear { ['ldap', 'mysql', 'sqlite', 'tidy', 'xmlrpc']: ensure => 'installed'; ['ps','snmp']: ensure => 'absent'; } 

是的,你可以通过嵌套数组来实现这个function( [ ['ldap', 'installed'], ['mysql', 'installed'],... )并调整函数。

但是,真的,这只会导致你的configuration混乱,难以阅读。 只需定义一个类,将包放在你想要的包中,然后包含这个类。