我们正在使用木偶3.8(遗憾的是还不能移动到木偶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 **)
然后我们点击了一个重复的资源。任何人都可以建议我如何处理该哈希值?
由于
答案 0 :(得分:1)
问题从这里开始,其中setOnSMSListener()
被赋予非唯一数据作为其名称:
processor::process_array
当重叠/相同define processor::hash_entry ($field1, $array_data) {
processor::process_array { ${array_data}:
# ...
调用processor::hash_entry
两次时,会生成:
array_data
我猜是你报告的重复资源。
如果您使用唯一数据作为前缀,即Processor::Process_array[data1]
Processor::Process_array[data2]
Processor::Process_array[data3]
Processor::Process_array[data2]
资源的“item1”/“item2”名称(或适当的field1),那么它们将是唯一的。
使用stdlib prefix()函数,在所有数据*条目前加上hash_entry名称:
processor::hash_entry
这将产生:
define processor::hash_entry ($field1, $array_data) {
$prefixed_array_data = prefix($array_data, "${title}-")
processor::process_array { ${prefixed_array_data}:
# ...
如果您需要在没有前缀的情况下访问Processor::Process_array[item1-data1]
Processor::Process_array[item1-data2]
Processor::Process_array[item2-data3]
Processor::Process_array[item2-data2]
内的data2
值,则可以始终split process_array
来取回数据。
$title