使用 Hiera 设置全局变量

使用 Hiera 设置全局变量

我想设置一个由 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 应该用于覆盖默认值,而不是设置默认值。

相关内容