Puppet 模块开发与使用全攻略
1. Cacti 模块供应期间的健壮性处理
Cacti 模块存在一个小问题。它是自给自足的,负责 Cacti 的安装和配置。但在 Puppet 首次运行时,cacti 包及其 CLI 不可用,代理会判定 cli 提供者不合适。由于它是 cacti_device 类型的唯一提供者,在 cacti 包同步之前同步的该类型资源会失败。
对于定义类型 cacti::device,可以为内部资源添加 require 元参数。对于原生类型实例,可以使用 autorequire 功能。就像文件自动依赖其所在目录一样,Cacti 资源应依赖 cacti 包的成功同步。在 cacti_device 类型中添加以下代码:
autorequire :package do
catalog.resource(:package, 'cacti')
end
2. 通过事实增强 Puppet 的系统知识
自定义事实是 Puppet 中很有用的功能。这里以 Cacti 模块为例,聚焦于原生 Ruby 事实,它比外部事实更具可移植性。事实属于 Puppet 插件,位于 lib/facter/ 子树中。
对于 cacti 模块的用户,了解给定 Cacti 服务器上可用的图形模板列表可能会有帮助。可以通过一个事实传递完整列表。使用 Facter 2.x 时,可以将列表作为数组处理;若要与 Facter 1.x 兼容,事实值应为列表的字符串表示,通常是所有列表值的逗号分隔连接。
以下代码在 cacti/lib/facte
超级会员免费看
订阅专栏 解锁全文
3

被折叠的 条评论
为什么被折叠?



