Puppet
Puppet 2.7 是否允許未參數化的“params”類的類繼承?
執行時出現以下錯誤
puppet-lint
:$ puppet-lint manifests/* manifests/init.pp - WARNING: class inheriting from params class on line 72
我在duckduckgo.com上快速搜尋了一下,得到了這個:
http://puppet-lint.com/checks/class_inherits_from_params_class/
但是,我們的 Puppet Agent 版本都是 2.7 或更高版本,我們的 Puppet Master 都是 3.0 或更高版本。
作為參考,有
init.pp
問題的程式碼如下:class myclass ( $zone = 'top', $::myclass::params::base_url, $::myclass::params::username, ) inherits myclass::params { ...
中的程式碼
params.pp
如下:class myclass::params { $base_url = hiera('myclass::base_url','https://beta.tpsreports.com/coversheets/') $username = hiera('clap::base_url','prod') }
即使 Hiera 查找失敗,我仍然不應該收到這樣的錯誤:
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Must pass ::myclass::params::base_url to Class[Myclass] at /etc/puppet/manifests/nodes/beta_servers_0.pp:126 on node beta-web-server-0.tpsreports.com
既然我已經討論了一些背景,我非常願意添加,如果有人問,我的問題如下:
- 如果
params
即使 hiera 查找以某種方式失敗,我的類也會提供參數,為什麼我會收到此錯誤?- 我是否必須使用可怕的解決方法(即 puppet-lint.com 連結中的“你應該做的事情”,即使我的 Puppet 版本高於
2.6.2
所有情況?
你的
init.pp
課應該是:class myclass ( $zone = 'top', $base_url = $::myclass::params::base_url, $username = $::myclass::params::username, ) inherits myclass::params {
您不直接將繼承的變數放在參數列表中;您將它們用作此類參數的預設值。