あるクラスのスコープでは、別のクラスの変数にアクセスできる必要があります。変数はパラメータとして渡されます。使用例では人形では、異なるパラメータ化されたクラスからクラススコープ内の変数を取り出す方法
class parameterized_class (
$param1,
) {
...
}
と
class other_class() {
include parameterized_class
Class['parameterized_class'] -> Class['other_class']
$local_var = $parameterized_class::param1
}
:
node default {
class { 'parameterized_class':
param1 => 'somevalue',
}
class { 'other_class': }
}
上記の例では動作しません、私はおおよそ次のようになりエラーが出るよう:
をparam1に渡す必要があります クラス[Parameteriz ed_class]ノードlocalhostを明らかに
上 /path/to/modules/parameterized_class/manifests/init.pp:1 で、任意のパラメータを渡さずparameterized_class
を宣言しようとしています。しかし、ドキュメントから、私はinclude
がすでにクラスが既に宣言されていることを許していることがわかります。parameterized_class
宣言をother_class
の依存関係として持っているので、このエラーがどのようになっているのか分かりません。
私は人形3.4.3、トラスティのUbuntu 14.04で利用可能なバージョンを使用してい
がどのように私はother_class
の範囲内からparameterized_class
で$param1
の値を取得については行くべき
include
を使用することはできませんか?
まず、旧式のPuppetバージョン(https://docs.puppet.com/puppet/4.10/puppet_collections.html#apt-based-systems)にアップグレードします。第2に、パラメータ化されたクラスで 'include'を使うことはできますが、ここで必要なものを達成するのには役立ちません。第三に、 'class ['parameterized_class'] - >クラス['other_class']'を他のクラスの定義の中に入れようとしていると、おそらく最終的に問題を引き起こすでしょう。これと何をしようとしているのか、問題を解決する最も簡単な方法はhieraか 'include parameterized_class'行を削除することです。 –
ご希望のルートをお知らせください。さらにお手伝いできます。 –