【发布时间】:2017-01-26 11:40:07
【问题描述】:
我们正在使用 puppet 3.8(遗憾的是还不能迁移到 puppet 4)
我在 hiera 中有一个看起来像这样的哈希:
hash_data:
item1:
field1: 'some data'
array_data:
- data1
- data2
item2:
field1: 'other data'
array_data:
- data3
- data4
我已经将一个模块放在一起,代码如下:
class processor {
$data = hiera_hash('hash_data', {})
create_resources(processor::hash_entry, $data)
}
define processor::hash_entry ($field1, $array_data) {
# .. do_something ..
# process array items
processor::process_array { $array_data :
datavar = 'somevalue'
}
}
define processor::process_array($element, $datavar) {
# do something
}
只要哈希中的 array_data 字段都包含唯一字段,这就可以正常工作。但是,如果我需要放置非唯一数据,例如:
hash_data:
item1:
field1: 'some data'
array_data:
- data1
- data2
item2:
field1: 'other data'
array_data:
- data3
- data2 ( **non-unique value **)
然后我们遇到了重复的资源。谁能建议我如何处理该哈希?
谢谢
【问题讨论】:
-
你想要的结果不清楚。如果
data2在YAML中定义了两次,你是想只定义一次还是两次Processor::ProcessArray[data2]?如果已经定义,应该跳过它,还是应该根据处理器::hash_entry 名称唯一地定义它? -
@DominicCleal - 道歉,应该更清楚。我希望将条目作为唯一实例处理。
标签: arrays hash iteration puppet hiera