是否有可能在hiera yaml中有条件?

时间:2014-05-14 04:05:34

标签: puppet hiera

我正在努力实现以下目标。 - 我在hiera yaml中为a.yaml定义了某些变量 - 我想从外部事实中读取一些变量。 - 但是,如果没有定义外部事实,我想使用一些默认值。

所以例如

---
key1: value1
key2: %{value2_from_facts} | value2

在这种情况下,如果自定义事实' value2fromfacts'没有定义,我希望key2有value2。这可能吗?

如果使用的事实未解决,是否有更好的替代方法将默认值分配给hiera变量?

1 个答案:

答案 0 :(得分:1)

我不认为Hiera提供了关于这种情况的好方法。我建议在清单级别解决这个问题,例如

if $factvalue {
  $myvalue = $factvalue
}
else {
  $myvalue = hiera('key2')
}

要模块化,请创建一个应该像

一样的parser function
my_hiera($factvalue,'key2')

有一个像

这样的身体
override = args.shift
if override.empty?
  # duplicate hiera()
  key, default, override = HieraPuppet.parse_args(args)
  HieraPuppet.lookup(key, default, self, override, :priority)
else
  override
end

这完全没有经过考验,只能作为一般概念的草图。