在Puppet中收集并传递参数

是否有办法(a)接受对类或资源定义的任意参数,然后(b)将这些parameter passing给另一个类或资源定义?

我经常发现我写的是一个本地types或第三方模块的薄包装。 例如:

define myconfigfile { file { "/path/to/$name": owner => lars, group => lars, ... } } 

也就是说, myconfigfile是一组具有已知前缀的文件资源的有效缩写。 我实际上喜欢myconfigfile接受与file资源types(如contentsource等)相同的参数,但我想避免:

 define myconfigfile ( $content = undef, $source = undef ) { ... } 

当只有一个或两个参数时,这可以正常工作,但如果我试图用大量的参数来包装一个参数化的类,它变得难以pipe理。

一种可能性是使用散列来传递任意参数列表。

另一个也许更好的select是使用Ruby DSL ,它允许你使用Ruby而不是Puppet语言。

还有各种各样的例子 。

本质上,你可以传入散列表,然后使用Ruby的迭代/循环(ruby 散列对象有一个.each方法)从散列中提取键值对。

Ruby DSL在2.6.x中可用。