有没有办法在 Puppet 模块(而不是在模板中)中使用数组?

有没有办法在 Puppet 模块(而不是在模板中)中使用数组?

我想使用 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,
    }
}

相关内容