2017-01-19 5 views
0

私は人形4を使用していると私は、私は別のクラスにパラメータを渡すことができますどのように思ったんだけど:Puppetの別のクラスにパラメータを渡すにはどうすればよいですか?

私はカスタムリソースがあります。

class system::classA { 
    define myresource ($param1, $param2) { 
    include system::classB 
    } 
} 

class system::classB { 
    file "${param1}"{ 
    ensure => present 
    } 
} 

を、私は他からの私のリソースを呼んでいますモジュールのように

system::classA::myresource { 
    param1 => "test", 
    param2 => "test", 
} 

ですが、パラメータは常に空です。 classBでパラメータを渡したりアクセスしたりするにはどうすればよいですか?新しいパラメータを

class system::classB($param1, $param2) { 
    file { "${param1}": 
    ensure => present, 
    } 
} 

そして代わりにinclude機能を使用してのsystem::classA::myresourceに、このスタイルを使用して設定します:

答えて

1

あなたはので、データが通過することができClassBのにパラメータを追加する必要があります

define myresource ($param1, $param2) { 
    class { "system::classB": 
    param1 => $param1, 
    param2 => $param2, 
    } 
} 

(O私はmyresourceを置くことをお勧めしたい、クラス内を定義するために、それは珍しいことに注意してくださいut300のclassA

+0

また、この場合は 'classB'を直接宣言する必要があります。自動データバインディングは、彼が行くように' include'ルートに行きたいと思っている可能性があります。 –

+0

私はあなたの意見に同意しますが、その質問は文脈に欠けている/非常に難読化されているので、どのように実装するべきかを確かめるのは難しいです。 –

+0

私は両方の可能性を提示すべきだと考えています。あなたはクラス宣言を好んでおり、Johnがこれに答えるなら、彼は自動データバインディングのルートに行くでしょう。すべての意見がそこにある。 –

関連する問題