Мы используем кукольный 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 **)
затем мы попали в дубликат ресурса. Может ли кто-нибудь предложить, как я могу обработать этот хеш?
Благодаря
Результат, который вы хотите, неясен. Если в YAML дважды задан 'data2', вы хотите только один раз или два определить« Processor :: ProcessArray [data2] »? Должен ли он быть пропущен, если он уже определен, или он должен быть определен однозначно основанным также на процессоре :: hash_entry name? –
@ DominicCleal - извинения, должно быть, было яснее. Я бы хотел, чтобы записи обрабатывались как уникальные экземпляры. – SimonH