我正在尝试将hiera json文件中的密钥读取到数组中。
json如下:
{
"network::interfaces": {
"eth0": {
"ip": "10.111.22.10"
},
"eth1": {
"ip": "10.111.22.11"
},
"eth2": {
"ip": "10.111.22.12"
}
}
}
在我的Puppet代码中,我正在这样做:
$network_interfaces = hiera_array('network::interfaces')
notice($network_interfaces)
结果如下:
Notice: Scope(Class[Role::Vagrant]): {eth0 => {ip => 10.111.22.10}, eth2 => {ip => 10.111.22.11}, eth3 => {ip => 10.111.22.12}}
但是我想要的只是接口:[eth0,eth1,eth2]
有人可以让我知道该怎么做吗?
答案 0 :(得分:1)
hiera_array()
和普通hiera()
之间的区别与所请求的密钥(在您的情况下为network::interfaces
)出现在多个层次结构级别时发生的情况有关。它与您想要数据以什么形式几乎没有关系,而与无关与选择数据结构的零碎关系。 hiera_array()
请求“数组合并”查找。更现代的lookup()
函数将此称为“独特”合并策略。
看起来似乎不太可能是您真正想要的。在这种情况下,最简单的方法是读取整个哈希并提取密钥:
$network_interfaces = keys(hiera('network::interfaces'))
在Puppet 4中,您需要使用puppetlabs / stdlib模块提供的keys()
函数。从Puppet 5开始,该功能就会显示在核心Puppet中。