Получить значение hiera в манифесте марионетки с вложенными ключами

Я новичок в использовании hiera с puppet (и несколько новичок в puppet).

Я написал этот бит yaml:

---
web_mysql_server:
 mysql_database: "my_production"

а затем я пытаюсь использовать его в марионеточном манифесте следующим образом:

database => hiera('web_mysql_server::mysql_database'),

И это не работает, выдает ошибку

Error: Could not find data item web_mysql_server::mysql_database
  in any Hiera data file and no default supplied at
  /vagrant/puppet/modules/web_mysql_server/manifests/init.pp:33
  on node railstest.vm

(здесь я добавил несколько '\n' для удобочитаемости).

Я подозреваю (надеюсь!) Это простая синтаксическая ошибка, которую я не получаю. Кто-нибудь видит, что я делаю неправильно?


person jma    schedule 14.05.2016    source источник
comment
какую версию марионетки вы используете?   -  person Mifeet    schedule 14.05.2016
comment
Puppet 3.4.3 (ubuntu 14.04 LTS).   -  person jma    schedule 15.05.2016


Ответы (1)


На основе hiera документации, правильный синтаксис для доступа к вложенным ключам:

hiera('web_mysql_server.mysql_database')

Такой синтаксис для квалифицированных ключей существовал не всегда, в документации говорится, что он появился в Hiera 2.0.

Я знаю, что мы используем puppet 3.8.3, и квалифицированные ключи еще не поддерживаются в нашей настройке. Мы обходим это ограничение с помощью этого подхода:

$mysql_configuration = hiera('web_mysql_server')
# ...
database => $mysql_configuration['mysql_database']
person Mifeet    schedule 14.05.2016
comment
dpkg говорит, что я использую hiera 1.3, и запись через точку тоже не работает. Значит, до Hiera 2.0 вложенные ключи были даже невозможны? - person jma; 14.05.2016
comment
Я так считаю. Я обновлю свой ответ возможным решением - person Mifeet; 14.05.2016