Configuration

有沒有辦法在 puppet 模組中使用數組(不在模板中)?

  • May 11, 2010

我想用 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”

這是$dirshadoop_slave

正如消息告訴您的那樣,任何資源規範都需要一個名稱。

在您的特定情況下,以下程式碼段應該可以工作:

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

   hdfs_site { "${name}_hdfs_site":
       dirs => $dirs,
   }
}

引用自:https://serverfault.com/questions/140281