Puppet 的类参数传递
这篇讲的是如何通过为类添加参数来提升 Puppet 配置的灵活性。作者从使用 ENC(外部节点分类器)管理 Puppet 的实践出发,发现仅传递一个全局的 role 参数在面对频繁修改的配置时,操作起来并不方便。 因此,他考虑引入类参数。文章通过修改前后的代码对比,清晰地展示了这一转变:将原本硬编码在 `nginx::loadbalancer` 子类中的 `iplist` 变量,提升为父类 `nginx` 的一个参数,并逐层传递下去。这样在 ENC 中,就可以直接为 `nginx` 类指定 `iplist` 的值,实现了配置的灵活注入。 文章还总结了三个关键要点: ENC 传递的参数值需要从父类层层传递到真正使用的子类;在 ENC 中为类传参时,类声明必须采用哈希形式;而接受参数的类在调用时,则必须使用资源声明式的语法,而不能再使用 `include`。这个方法巧妙地利用了 Puppet 的类继承和参数特性,在保持 ENC 输出结构相对简洁的同时,显著提高了配置管理的灵活性。