在 Puppet 中收集并传递任意参数

在 Puppet 中收集并传递任意参数

有没有办法(a)接受类或资源定义的任意参数,然后(b)将这些参数传递给另一个类或资源定义?

我经常发现我编写的是一个对原生类型或第三方模块的薄包装。例如:

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

也就是说,myconfigfile实际上是具有已知前缀的一组文件资源的简写。我实际上希望myconfigfile 接受与资源类型相同的参数file(例如 contentsource等),但我想避免:

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

当只有一个或两个参数时,这种方法可以正常工作,但如果我尝试用大量参数包装一个参数化类,它就会变得难以管理。

答案1

一种可能是使用哈希传递任意参数列表。

另一个可能更好的选择是利用Ruby DSL它允许您使用 Ruby 而不是 Puppet 语言。

有各种各样的例子也可用。

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

Ruby DSL 在 2.6.x 版本中可用。

相关内容