2017-04-18 4 views
0

は別の人によって書かれ、クラスで以下のような構成に会ったマニフェスト:人形クラス構文の明確化

postgres_helper::tablespace_grant { $tablespace_grants: 
    privilege => 'all', 
    require => [Postgresql::Server::Role[$rolename]] 
    } 

$ tablespace_grants何をするか:この場合手段?最初私はそれの値を受信するために通知を使用した場合しかし、それはハッシュされ、そのタイトルのいくつかの種類であるが示唆:

Tablespace_grants値は[{名=> TS_INDEX_01、役割=>現像}、 この場合には手段:$ tablespace_grantsを何{名前=> TS_DATA01_01、役割=>開発者}]

+0

実際には、それはリソースのタイトルに許可された配列であり、Puppetはそれを繰り返します:https://docs.puppet.com/puppet/4.9/lang_resources_advanced.html#arrays-of-titles。 'notice'の代わりに' notify'を実行して、エージェント上の値がマスター上ではなく、マスター上ではないことを知ってください。 –

答えて

2

?まず私は、postgres_helper::tablespace_grantリソース宣言のタイトルとして、タイトルのいくつかの種類である 、

それははい、使用する変数の参照、であることを示唆しました。

私はそれの 値を受信するために通知を使用した場合しかし、それはハッシュである:

Tablespace_grants値は[{名=> TS_INDEX_01、役割=>現像}、 {名=> TS_DATA01_01、役割=>現像}]

は実際には、ハッシュの配列であるように見えます。配列は、リソースの宣言のタイトルとして、配列要素ごとに1つずつ複数のリソースをコンパクトに宣言するために使用できます。しかし、Puppet 4では、the elements are required to be stringsです。 Puppetの以前のバージョンでは、リソースタイトルとして提示されたハッシュを文字列化します。私は、Puppet 4がまだこれに戻っているかどうかは不明です。

いずれの場合でも、パペットのどのバージョンでも、全体の宣言が元の作者が意図したものを意味するとは考えにくいです。その目的は、それぞれがハッシュの1つで指定されたプロパティを持つ複数のリソースを宣言することですが、指定されたコードはそれを達成せず、目的のコードが正確には不明です。

+0

2つのデフォルト属性を持つ 'create_resources'が元の意図を表しているのでしょうか? –

+0

@MattSchuchard、はい、 'create_resources()'は最終的に問題を解決するかもしれませんが、データは現在 'create_resources()'が消費できる形式ではありません。 –

+0

@MattSchuchard、OPがPuppet 4、またはPuppet 3を将来のパーサで使用している場合、 'each'構造は現在配置されているデータでジョブを実行する可能性があります。 –