我想使用 puppet 来管理 Hadoop 集群。在机器上,我们有几个目录必须创建并设置权限。
但我无法为已定义的方法添加数组值。
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
。
编辑
错误信息如下:
无法解析环境生产:所有资源规范都需要名称;在 /etc/puppet/modules/hadoop/manifests/init.pp:52 处预期为“%s”
$dirs
这是hadoop_slave
答案1
正如消息告诉您的那样,任何资源规范都需要一个名称。
在您的特定情况下,以下代码片段应该有效:
define hadoop_slave( $mem, $cpu, $dirs ) {
hadoop_base { "${name}_hadoop_base":
mem => $mem,
cpu => $cpu,
}
hdfs_site { "${name}_hdfs_site":
dirs => $dirs,
}
}