2

I want to use puppet to manage a hadoop cluster. On the machines we have several directories which must be created and set permissions.

But i'm unable to add array values for defined methods.

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 is similar to hdfs_site.

EDIT

The error message was:

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

which is the $dirs line in hadoop_slave

2
  • I wanted to explain what is in site.pp but serverfault threw an exception :( Commented May 10, 2010 at 15:17
  • Please define how you being "unable to add array values for defined methods" manifests itself in form of error messages or unwanted side effects. Commented May 10, 2010 at 15:54

1 Answer 1

7

As the message tells you, any resource specification requires a name.

In your specific case the following snippet should work:

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

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.