Existe alguma maneira de usar matrizes em um módulo de fantoches (não no modelo)?

2

Eu quero usar o fantoche para gerenciar um cluster de hadoop. Nas máquinas, temos vários diretórios que devem ser criados e definir permissões.

Mas não consigo adicionar valores de matriz para métodos definidos.

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 é semelhante a hdfs_site .

EDITAR

A mensagem de erro foi:

Could not parse for environment production: All resource specifications require names; expected '%s' at /etc/puppet/modules/hadoop/manifests/init.pp:52

que é a linha $dirs em hadoop_slave

    
por KARASZI István 10.05.2010 / 17:09

1 resposta

7

Como a mensagem informa, qualquer especificação de recurso requer um nome.

No seu caso específico, o snippet a seguir deve funcionar:

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

    hdfs_site { "${name}_hdfs_site":
        dirs => $dirs,
    }
}
    
por 11.05.2010 / 12:30