2016-06-10 2 views
2

У меня есть следующие файлы данных hiera (yml).Как работает hiera?

  • hiera/данные/домен/abcd.com
  • hiera/данные/роль/webserver.yml

позволяет сказать, что у меня есть кукольный узел, который имеет роль 'веб-сервер', назначенный и его имя хоста является abcd.com

в настоящее время под - hiera/данных/домен/abcd.com файла, у меня есть этот

config::xyz_category::name: 'bbbb' 

и у меня есть следующие данные под - hiera/данных/роли/webserver.yml

config::xyz_category: 
    username: 'aaaa' 

мой hiera порядок поиска данных является, как показано ниже (hiera.yml)

:backends: yaml 
:logger: console 
:merge_behavior: deeper 
:yaml: 
    :datadir: /etc/puppet/branches/hiera/data 
:hierarchy: 
    - fqdn/%{::fqdn} 
    - role/%{::rolename} 
    - domain/%{::domain} 
    - defaults 

Так что мой вопрос позволяет сказать, что у меня есть модуль, написанный для этой роли «веб-сервер».

Внутри этого модуля я могу назвать данные hiera, как показано ниже?

$config = hiera('config::xyz_category', {}) 

так что

$config['name'] should return 'bbbb' 
$config['username'] should return 'aaaa' 
+0

Вы пытались это сделать? – TylerH

+0

Это довольно хорошая иерархия и настройка ролей, которые у вас есть. Многие случайные разработчики Puppet кажутся запутанными в отношении лучших практик, но это довольно хорошо. –

ответ

3

Нет, не совсем.

Hiera приоритет поиска, например, выполняется с помощью функции hiera(), смотрит вверх полное значение в связанный с ключом, принимая все значения от уровня иерархии с наивысшим приоритетом, который обеспечивает один. В случае, описанном вами, это значение будет хешем с точно одним ключом, «имя пользователя».

С другой стороны, если вы хотите собрать хеш-значение с нескольких уровней иерархии данных, то вы ищете поиск hash-merge. Hiera поддерживает это, но вы должны использовать правильную функцию подстановки:

$config = hiera_hash('config::xyz_category', {}) 

в частности, отметить, что разница между hiera() и hiera_hash()hiera_array()) является в первую очередь о стратегии поиска, а не о типе возвращения стоимость. Функция plain hiera() может возвращать скаляры, хеши и массивы, в зависимости от ситуации.

+0

Он также может изменить 'config :: xyz_category' в хэш с ключами' name' и 'username'. Все это напоминает мне, как я не могу дождаться, пока поставщик Puppet Data не станет готовым к производству. –

Смежные вопросы