繁体   English   中英

用于设置依赖项值的模块级别的层次结构

[英]Puppet module level hiera for setting dependency values

我创建了一个puppet模块,并希望使用(hiera 5)模块级别的hiera来设置依赖项的值。 我创建了一个hiera.yaml,数据目录和common.yaml。 但是,模块的层次结构值似乎没有传递给依赖项,因此我必须在环境级别设置层次结构(这样,模块内部就不会包含自身)。

看来,hiera键只能使用本地模块前缀来解析。

我针对的依赖项是fervid / secure_linux_cis,我需要使用“ enforced => false”为其类设置一些层次。 在清单中执行此操作并非100%有效,因为一些类作为重复资源存在。

本质上,我希望在模块的common.yaml中能够执行的操作是:

---
my::module::key1:  'value'
secure_linux_cis::redhat7::cis_1_1_2:enforced: false

使用上面的示例,我可以解析my :: module值,但是依赖项secure_linux_cis值将被忽略。

有没有一种方法可以使模块级别的层次结构将值传递给依赖项?

有没有一种方法可以使模块级别的层次结构将值传递给依赖项?

不直接,不。 自动数据绑定在要查找其参数的类的上下文中执行Hiera查找,而不是声明该参数的类。 那么,在您的情况下,将使用模块secure_linux_cis的层次数据来查询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

这应该工作。 您错过了一个:在您的示例中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM