Назад | Перейти на главную страницу

Проблемы с использованием hiera в настройке без мастера и получением значений, установленных для классов

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

puppet apply /tmp/puppet/manifests/site.pp --modulepath=/tmp/puppet/modules --hiera_config=/tmp/puppet/hiera.yaml

Я пытался работать в hiera, чтобы обрабатывать различные типы узлов, которые у нас есть, и в качестве отправной точки пытался использовать настраиваемый факт, установленный на узлах. Этот факт относится к типу узла, и в этом примере для него установлено значение diskless.

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-config ничего не делает, и нужно сделать символическую ссылку /etc/hiera.yaml на конфигурацию hiera.yaml, которую вы хотите использовать.

Изменить 3: после символической ссылки /etc/hiera.yaml на /tmp/puppet/hiera.yaml я смог найти переменные hiera, но не смог использовать их в манифестах марионеток ожидаемым образом. Вместо этого мне пришлось прямо так позвонить Хиере

$networking_config    = hiera('networking::network::networking_config','no')

Ужасно запутанный

Попробуй это:

hiera cluster ':: nodetype = diskless'

Видеть: https://docs.puppetlabs.com/hiera/1/command_line.html#fact-sources