Как получить доступ к значению в хэше hiera напрямую с помощью марионеточного поиска?

Допустим, есть хэш hiera:

foo::bar:
  key1: 'value1'
  key2: 'value2'

Есть ли возможность найти значение key1 напрямую с помощью функции поиска?

Я подумал о чем-то вроде:

class myclass (
  String $value1 = lookup('foo::bar::key1'),
) {
...
}

Единственный способ, которым я мог решить эту проблему, - это найти хеш и получить доступ к значению позже с помощью hash['key1'], но, возможно, есть более чистый способ сделать это.


person pascalre    schedule 11.05.2020    source источник
comment
Самое близкое, с чем вы могли бы достичь этого, это: lookup('foo::bar')['key1']   -  person Matt Schuchard    schedule 11.05.2020


Ответы (1)


К сожалению, в Puppet нет способа сделать это, используя только lookup.

По сути, lookup работает путем поиска ключей Hiera, которые не связаны с хеш-ключами. Ключ Hiera формы foo::bar::baz фактически представляет собой одну неструктурированную строку — это не означает, что существуют хэши с именами foo или foo::bar. :: — это просто часть ключевой строки, а не синтаксический сахар для поиска по хешу, как, например, . в JavaScript.

lookup задокументировано в

https://puppet.com/docs/puppet/latest/hiera_automatic.html

person Jon    schedule 11.05.2020