Проблемы с использованием hiera в настройке без мастера и получения значений, установленных для классов
Я запускаю установку кукол без хозяина, которая применяет изменения кукол следующим образом.
puppet apply /tmp/puppet/manifests/site.pp --modulepath=/tmp/puppet/modules --hiera_config=/tmp/puppet/hiera.yaml
Я пытался работать в hiera для обработки различных типов узлов, которые у нас есть, и в качестве отправной точки пытался использовать пользовательский факт, установленный на узлах. Этот факт является типом узла и в этом примере устанавливается значение бездискового.
Фасетер на узле признает этот факт.
# facter -y | grep nodetype
nodetype: diskless
И hiera.yaml содержит следующее
---
:backends:
- yaml
:yaml:
:datadir: /tmp/puppet/data
:hierarchy:
- node/%{::nodetype}
И в /tmp/puppet/data/node/diskless.yaml есть
---
cluster: blues
Хотя после этого я пытаюсь перепроверить, что hiera устанавливает переменные по мере необходимости, но, похоже, это не работает.
hiera -y diskless.yaml cluster
nil
Есть ли лучший способ отладить проблему. Я уверен, что это что-то простое, хотя было бы неутешительно, если hiera не работает (или не может) работать в этом случае использования.
ура
Изменить 1:
Дополнительная отладка
hiera cluster '::nodetype=diskless' -d
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Hiera YAML backend starting
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking up cluster in YAML backend
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking for data source defaults
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Cannot find datafile /var/lib/hiera/defaults.yaml, skipping
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking for data source global
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Cannot find datafile /var/lib/hiera/global.yaml, skipping
nil
Изменить 2:
Похоже, установка флага --hiera-config ничего не делает, и нужно вставить символическую ссылку /etc/hiera.yaml в конфигурацию hiera.yaml, которую вы хотите использовать.
Редактировать 3: После символической ссылки /etc/hiera.yaml на /tmp/puppet/hiera.yaml я смог найти переменные hiera, но не смог использовать их в марионеточных манифестах ожидаемым образом. Вместо этого я должен был позвонить Hiera как так прямо
$networking_config = hiera('networking::network::networking_config','no')
Ужасно сбивает с толку
1 ответ
Попробуй это:
кластер hiera '::nodetype= бездисковый'
Смотрите: https://docs.puppetlabs.com/hiera/1/command_line.html