使用模块扩展Puppet基础设施
1. 用原生类型替换自定义类型
创建一个带有匹配提供者(或多个提供者)的自定义资源类型并非易事,需要经历以下步骤:
1. 为类型命名
2. 创建资源类型的接口
3. 设计合理的参数钩子
4. 使用资源名称
5. 添加提供者
6. 声明管理命令
7. 实现基本功能
8. 允许提供者预取现有资源
9. 在配置期间使类型更健壮
2. 为类型命名
原生类型和自定义类型在命名上有重要区别。自定义类型基于清单,有模块命名空间,而原生类型使用简单名称,所有已安装模块的原生类型可自由混合。例如,将cacti::device的原生实现命名为device是不明智的,因为这很容易与其他模块中的设备概念冲突,所以第一个资源类型命名为cacti_device是比较合适的。
该类型必须在cacti/lib/puppet/type/cacti_device.rb中完全实现,所有钩子和调用都包含在Type.newtype块中:
Puppet::Type.newtype(:cacti_device) do @doc = <<-EOD Manages Cacti devices. EOD end@doc中的文档字符串应被视为