我创建了一个木偶模块,并希望使用(hiera 5(模块级hiera来设置依赖项的值。 我创建了一个hiera.yaml,data dir和common.yaml。 但是,模块 hiera 值似乎没有传递给依赖项,我必须在环境级别设置 hiera(然后不是模块中的自包含(。
似乎 hiera 键只能使用本地模块前缀进行解析。
我所针对的依赖项是狂热的/secure_linux_cis,我需要为它的类设置一些 hiera,带有"强制 => false"。 在清单中执行此操作并非 100% 有效,因为一些类作为重复资源存在。
从本质上讲,我希望能够在模块的common.yaml中做的是:
---
my::module::key1: 'value'
secure_linux_cis::redhat7::cis_1_1_2:enforced: false
使用上面的例子,我可以解析 my::module 值,但依赖secure_linux_cis值被忽略。
有没有办法让模块级 hiera 将值传递给依赖项?
有没有办法让模块级 hiera 将值传递给依赖项?
不是直接的,不是。 自动数据绑定在要查找其参数的类的上下文中执行 Hiera 查找,而不是在声明它的类的上下文中执行。 那么,在您的情况下,将参考模块secure_linux_cis
的 hiera 数据以获取类secure_linux_cis::redhat7::cis_1_1_2
参数的默认值。
如果您愿意冒险使用该类的类似资源的声明,那么您应该能够执行以下操作:
class my::module(
String $key1
) {
$cis112_enforced = lookup('secure_linux_cis::redhat7::cis_1_1_2:enforced', Boolean, undef, false)
class { 'secure_linux_cis::redhat7::cis_1_1_2': enforced => $cis112_enforced }
}
当然,这会带来所有的风险,参加类似资源的类声明。 我实际上不推荐它。 您可以考虑改为在环境级别数据的每节点级别设置参数。 您也可以考虑查看角色和配置文件模式,因为类似资源的类声明在配置文件类中更有意义。
secure_linux_cis::redhat7::cis_1_1_2::enforced
这应该有效。您在示例中错过了一个:
。