在一個類的範圍內,我需要能夠從另一個類訪問一個變量。該變量作爲參數傳遞,例如,在puppet中,如何從一個不同的參數化類中獲取類範圍內的變量
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]在 /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。其次,你可以在參數化類中使用'include',但這不會幫助你在這裏實現你想要的。第三,在'other_class'定義中使用'Class ['parameterized_class'] - > Class ['other_class']'以及你想要做的事情的方式可能最終會導致問題。考慮到這一點以及你正在嘗試做什麼,解決你的問題最簡單的方法是hiera或刪除'include parameterized_class'這一行。 –
讓我們知道你喜歡哪條路線,我們可以進一步提供幫助。 –