我在 RedHat Enterprise Linux 6 上运行 puppetlabs repos 中的 puppet open source 3.1.0,并使用 hiera 1.1.2。我遇到了一个问题,要么是 bug,要么是我对 hiera 如何使用参数化类存在根本性的误解。我设置了一个具有默认值的参数化子类。我试图在特定节点上将该值设置为其他值。该节点是在其中一个没有类的主清单中声明的,并且我在该清单中有 hiera_include('classes')。我试图更改“my_firewall”类中“activate”参数的值。当我的 hiera 节点文件如下所示时:
---
classes:
- puppetmaster
rel::auth_users: ['puppet']
rel::my_firewall::activate: false
rel::my_firewall 甚至没有加载(我已通知“activate”的两个布尔值,但没有看到它们)。rel::auth_users 参数传递正常。rel 类在 hiera 中的父类中定义。
当我将其更改为:
---
classes:
- puppetmaster
- rel::my_firewall
rel::auth_users: ['puppet']
rel::my_firewall::activate: false
它加载 rel::my_firewall 类但使用默认值,而不是 false 值。
作为健全性检查,当我在节点清单中以正常方式定义事物时,一切正常:
node 'puppet.my.domain' {
class { 'rel::my_firewall':
activate => false,
}
}
正确声明该类并将 activate 设置为 false。
我做错了吗?我的语法不对吗?任何帮助都非常感谢。
答案1
语法看起来不错。看起来像错误 17474- 错误值未正确加载。
作为一种解决方法,直到 3.2 版本发布,也许使用字符串?