Проблема с помощью hiera в установке без ведущего устройства и получая значения установлена для классов

Я выполняю марионеточную установку без ведущего устройства, которая применяет марионеточные изменения следующим образом.

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')

Ужасно сбивающий с толку

4
задан 4 November 2014 в 23:20
1 ответ

Попробуйте следующее:

hiera cluster ':: nodetype = diskless'

См .: https://docs.puppetlabs.com/hiera/1/command_line.html#fact-sources[12147 provided

5
ответ дан 3 December 2019 в 03:17

Теги

Похожие вопросы