我可以理解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']: }
但是,有没有办法可以传递多个数组来执行相同的操作?例如,如果我想安装一些 pear 库,而不想安装一些,我可以这样做吗?
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']
}
首先,这样的事情可能吗,或者是否有更好的方法使用多维数组等来做这样的事情?
任何帮助都将不胜感激,我发现木偶文档在这方面有所欠缺。
干杯
答案1
我认为你无法真正做到你所说的。你最终只会将同一个大数组传递给两个东西,而在你的示例中,你似乎想要同时迭代两个数组。
更重要的是,即使你能做到,这也太丑陋和难以阅读了。需要仔细阅读才能弄清楚哪些东西应该缺失或存在。
以下语法可以与 puppet 一起使用,更容易阅读且不会造成混淆,以后更容易进行更改,并且实际上字符数可能更少:
php::pear {
['ldap', 'mysql', 'sqlite', 'tidy', 'xmlrpc']:
ensure => 'installed';
['ps','snmp']:
ensure => 'absent';
}
答案2
是的,您可以通过嵌套数组([ ['ldap', 'installed'], ['mysql', 'installed'],...
)和调整函数来实现这一点。
但实际上,这只会让您的配置变得混乱且难以阅读。只需定义一个类,将包按您的需要放置,然后包含该类即可。