2016-04-25 12 views
0

にHieraハッシュを使用している間、私は私のhieraのYAMLファイルに次の値があります。評価エラー人形

test::config_php::php_modules : 
    -'soap' 
    -'mcrypt' 
    -'pdo' 
    -'mbstring' 
    -'php-process' 
    -'pecl-memcache' 
    -'devel' 
    -'php-gd' 
    -'pear' 
    -'mysql' 
    -'xml' 

と、次は私のテストクラスです:

class test::config_php (
$php_version, 
$php_modules = hiera_hash('php_modules', {}), 
$module_name, 
){ 

class { 'php': 
version => $php_version, 
} 

$php_modules.each |String $php_module| { 
php::module { $php_module: } 
} 
} 

私の人形を実行すると、Iマニフェストながら次のエラーが表示されます。

Error: Evaluation Error: Error while evaluating a Function Call, create_resources(): second argument must be a hash at /tmp/vagrant-puppet/modules-f38a037289f9864906c44863800dbacf/ssh/manifests/init.pp:46:3 on node testdays-1a.vagrant.loc.vag 
I am quite confused on what exactly am I doing wrong. My puppet version is 3.6.2 and I also have parser = future 

本当にありがとうございます。

答えて

0

あなたのYAMLが少しオフだったようです。

  1. あなたは本当にYAMLでは引用符を必要としません。
  2. あなたのインデントが1ではなく2であった。
  3. 最初のコロンは最初に間隔が空いていました。これは構文エラーをスローします。

それがより次のようになります。将来的には

test::config_php::php_modules: 
- soap 
- mcrypt 
- pdo 
- mbstring 
- php-process 
- pecl-memcache 
- devel 
- php-gd 
- pear 
- mysql 
- xml 

しようとすると、次のようにYAMLパーサを調べる:link

+0

提案とリンクに感謝しますが、私はYamlの変更を加えても同じ問題があるようです。 – Spaniard89

+0

評価を正しく読まなかったようです。あなたのコードに表示されていないcreate_resources関数を使用しています。この作品を見せてもらえますか? 関数の2番目の引数がハッシュであることを確認します。 この方法の詳細は、https://docs.puppet.com/hiera/3.1/data_sources.htmlを参照してください。 – Jamie

0

問題は私の人形のバージョン、何とかバージョン3.6の行為奇妙していましたたとえば、次の行で失敗していたなどのリソースを作成しています。

create_resources('::ssh::client::config::user', $fin_users_client_options) 

上記のコードスニペットパペットラボのsshモジュールの一部ですが、これは完全にテストされたものであり、例外の理由であってはなりません。

さらなる分析は、パラメータパーサは=将来は は、私は、パーサーとして将来を設定せずに、それぞれを使用して反復処理することはできません

、したがって、私は変更することを決めた

設定ファイルで設定されたときに例外がスローされたという事実につながった私次のようにソース:

私は新しいクラスを作成しました:

define test::install_modules { 
php::module { $name: } 
} 

をして、私は設定config_phpを変更:

class test::config_php (
$php_version, 
$php_modules = [], 
){ 

class { 'php': 
version => $php_version, 
} 

install_modules { $php_modules: } 
} 

すべてが今よりずっと良いようです。