我想设置一个由 Hiera 中的多个类和资源重复使用的值。换句话说,通过 Hiera 设置一个全局参数。因此,在相应的 yaml 文件中,我有:
myvarr: 'foo'
然后,在清单中,我尝试:
if $myvar == 'foo'
也
if $::myvar == 'foo'
毫无效果。这是怎么做到的?查看 Puppet 文档没有太大帮助,我看到的只是基于类的示例。
答案1
从 开始puppet 3
,puppet 会hiera
自动查找,但如果你有许多模块或类,对每个模块或类变量进行自动查找会增加目录编译时间,因此禁用自动查找
data_binding_terminus = none
我更喜欢仅在需要从中获取数据时进行明确调用hiera
:
$var = hiera('foo')
答案2
Hiera 将变量注入类中。因此,您需要定义一个类 my class,然后在 hiera 中使用 myclass::var: foo 。这将使 myclass 中的 var=foo 成为可能。
此外,hiera 应该用于覆盖默认值,而不是设置默认值。