配置人偶模块的最佳实践是什么?我有木偶2.7.11
。我觉得这种方式很乱,看起来像是在使用全局变量。
node default {
$always_apt_update = true
include apt
}
我应该创建将从原始配置继承大部分配置的类吗?该文档似乎有太多版本,我不确定哪个适用于我。
更新:
当我尝试这个时:
class { 'apt':
always_update => 'true',
}
我得到一个错误:
Error 400 on SERVER: Invalid parameter always_update at /etc/puppet/manifests/nodes.pp:32
您应该使用参数化类而不是全局变量。
例如:
有关详细信息,请参阅人偶文档:
这些答案似乎有点过时,新版本的 puppet 即 3.7.x,可以使用 Hiera 传递类参数。像类声明这样的资源不再被认为是最佳实践。
虽然第二个答案确实使用了 Hiera,但它明确地使用了“hiera”功能,这也是一种不太可取的做法。
新的解决方案看起来像这样:
/etc/puppet/manifests/site.pp
:/etc/puppet/modules/apt/manifests/init.pp
:/etc/puppet/hieradata/<filename>.yaml
Hiera 数据 yaml 文件可以根据需要具有不同的参数值。
这些天推荐的做法是使用Hiera。它内置于 3.x 中,但在 2.7 中你需要单独安装它。
然后,您可以在
apt
类的清单中从 Hiera 获取数据:使用这样的 Hiera 配置..
..节点(从
clientcert
事实中提取)将在查找中用作比common.yaml
文件更高的优先级。因此,对于
always_apt_update: false
innode1.example.com.yaml
和always_apt_update: true
incommon.yaml
,node1 最终会将该变量设置为 false,而其他节点会将其默认设置为 true。