Я выполняю марионеточную установку без ведущего устройства, которая применяет марионеточные изменения следующим образом.
puppet apply /tmp/puppet/manifests/site.pp --modulepath=/tmp/puppet/modules --hiera_config=/tmp/puppet/hiera.yaml
Я пытался работать в hiera для обработки различных типов узлов, которые мы имеем и поскольку начальная точка пыталась использовать пользовательский факт, который установлен на узлах. Этот факт является типом узла, и в этом примере установлен на значение бездисковых.
Facter на узле распознает этот факт.
# 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-конфигурация ничего не делает, и каждому нужно к символьной ссылке/etc/hiera.yaml к hiera.yaml, конфигурируют Вас, хотят использовать.
Редактирование 3: После symlinking/etc/hiera.yaml к/tmp/puppet/hiera.yaml я смог к поиску hiera переменные, но не смог использовать их в марионеточных декларациях ожидаемым способом. Вместо этого я должен был назвать hiera как так непосредственно
$networking_config = hiera('networking::network::networking_config','no')
Ужасно сбивающий с толку
Попробуйте следующее:
hiera cluster ':: nodetype = diskless'
См .: https://docs.puppetlabs.com/hiera/1/command_line.html#fact-sources[12147 provided