有没有什么办法可以在puppet模块中使用数组(不在模板中)?

我想用木偶来pipe理一个hadoop集群。 在机器上,我们有几个目录,必须创build和设置权限。

但我无法为定义的方法添加数组值。

define hdfs_site( $dirs ) { file { $dirs: ensure => directory, owner => "hadoop", group => "hadoop", mode => 755; } file { "/opt/hadoop/conf/hdfs-site.xml": content => template("hdfs-site.xml.erb"), owner => "root", group => "root", mode => 644; } } define hadoop_slave( $mem, $cpu, $dirs ) { hadoop_base { mem => $mem, cpu => $cpu, } hdfs_site { dirs => $dirs, } } 

hadoop_base类似于hdfs_site

编辑

错误消息是:

无法parsing环境生产:所有资源规范都需要名称; 在/etc/puppet/modules/hadoop/manifests/init.pp:52上预计'%s'

这是hadoop_slave$dirs

正如消息告诉你的,任何资源规范都需要一个名字。

在你的具体情况下,以下片段应该工作:

 define hadoop_slave( $mem, $cpu, $dirs ) { hadoop_base { "${name}_hadoop_base": mem => $mem, cpu => $cpu, } hdfs_site { "${name}_hdfs_site": dirs => $dirs, } }