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

Загрузить файл hiera из определенной переменной / факта / значения hiera

Я пытаюсь загрузить файл hiera в соответствии с определенным флагом.

Конфигурация Hiera hierarachy

:hierarchy:
  - "%{environment}/%{::fqdn}"
  - "%{environment}/%{nodetype}"
  - "%{environment}/%{calling_module}"
  - "%{environment}"
  - "common/%{calling_module}"
  - "common"

Фактически, я хочу факторизовать некоторую конфигурацию на уровне "типа узла". Цель состоит в том, чтобы не помещать один и тот же «блок» в файлы:

но вместо этого, но общая часть в:

После этого все серверы получат свои собственные конкретные значения с файлом fqdn yaml. (эта часть в порядке)

В настоящее время я не знаю, как предоставить данные "nodetype" в контекст hiera.

Я попытался поместить его в основной файл манифеста, например (да, я прочитал документ, и я знаю, что это плохая идея, но даже при попытке отчаяния это все равно не работает)

node 'nfs1.example.com', 'nfs2.example.com' {
  $nodetype= 'nfs-server'

но файл среда / тест / nfs-server.yaml не загружается hiera.

Я также пытался использовать настраиваемый факт, но используя настраиваемый факт с

modules/hosts/facts.d/host-fact-test.txt

Файл отправляется на хост агента, но здесь опять же, hiera не использует специальный файл.

Notice: /File[/var/lib/puppet/facts.d/host-fact-test.txt]/ensure: defined content as '{md5}d7492faae1bfe55f65f9958a7a5f6df9'

Если я использую поставить в известность марионеточная команда, значение в порядке

if $nodetype== 'nfs-server' {
  notify {"Running with \$nodetype ${nodetype} ID defined":
    withpath => true,
  }
}

результат:

Notice: /Stage[main]/attemps/Notify[Running with $nodetype nfs-server ID defined]/message: Running with $nodetype nfs-server ID defined

Стек - это Puppet с открытым исходным кодом в Ubuntu 14, поэтому версии:

Есть идея или предложение, чтобы заставить его работать (или добиться аналогичного поведения)?

Главный процесс Puppet обычно не использует конфигурацию в /etc/hiera.yaml, что может сбивать с толку. С марионеткой 3.x, это обычно /etc/puppet/hiera.yaml.

Вы можете убедиться, что используете (как root)

puppet master --configprint hiera_config

на мастер-машине.