运行时出现以下错误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
课应该是:您不直接将继承的变量放在参数列表中;您将它们用作此类参数的默认值。