Как указано в документации Hiera: объединение данных из нескольких источников говорит:
Примечание: глубокое объединение Hiera 5 эквивалентно «более глубокому» объединению Hiera 3.
Вы можете определить правила поиска в некоторых конфигурациях YAML:
lookup_options:
"^firewall::(.*)":
merge:
strategy: deep
, используя puppet lookup --explain needle
из CLI, может помочь понять, что происходит:
$ puppet lookup --explain firewall::firewalld::zones
Searching for "lookup_options"
Global Data Provider (hiera configuration version 5)
Using configuration "/etc/puppetlabs/puppet/hiera.yaml"
Merge strategy hash
Hierarchy entry "Defaults"
Path "/etc/puppetlabs/puppet/hieradata/default.yaml"
Original path: "default.yaml"
Found key: "lookup_options" value: {
"^firewall::(.*)" => {
"merge" => {
"strategy" => "deep"
}
}
}
Merged result: {
"^firewall::(.*)" => {
"merge" => {
"strategy" => "deep"
}
}
}
...
Вы можетезамените hiera_hash( 'firewall::firewalld::zones', {} )
на:
lookup('firewall::firewalld::zones', Hash, {'strategy' => 'deep'}, {})
или на предопределенный lookup_options
, в результате вы получите простой код, например:
lookup('firewall::firewalld::zones')