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

KAR*_*ván 2 configuration puppet hadoop

我想使用 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,
    }
}
Run Code Online (Sandbox Code Playgroud)

hadoop_base类似于hdfs_site.

编辑

错误消息是:

无法解析环境生产:所有资源规范都需要名称;/etc/puppet/modules/hadoop/manifests/init.pp:52 处的预期“%s”

这是$dirshadoop_slave

jos*_*chi 7

正如消息告诉您的那样,任何资源规范都需要一个名称。

在您的特定情况下,以下代码段应该有效:

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

    hdfs_site { "${name}_hdfs_site":
        dirs => $dirs,
    }
}
Run Code Online (Sandbox Code Playgroud)