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

У меня есть марионеточное ведущее устройство настроенная (версия 3.8.1) с hiera.yaml файлом, который я думаю, настраивается правильно, как так:

pete@ip-172-31-4-61:~$ cat /etc/puppet/hiera.yaml
---
:hierarchy:
    - "%{::fqdn}"
:backends:
    - yaml
:yaml:
    :datadir: '/etc/puppet/hieradata'

Когда я выполняю следующую команду:

sudo puppet master --verbose --debug --compile ip-10-1-3-7

(ip-10-1-3-7 один из моих узлов), я не вижу информации в каталоге на основе моих hiera данных. Еще более сбивающий с толку, я не вижу эту строку в отладке:

Debug: hiera(): Hiera YAML backend starting

Который я действительно вижу в других марионеточных ведущих устройствах, я имею, которые действительно работают с Hiera

ОБНОВЛЕНИЕ: Я отредактировал свой puppet.conf файл для включения hiera_config согласно комментариям ниже и перезапустил puppetmaster, но он все еще не работает.

pete@ip-172-31-4-61:~$ cat /etc/puppet/puppet.conf
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
certname = master
dns_alt_names = puppet
hiera_config = $confdir/hiera.yaml

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

Я запускаю Ubuntu 14.04 с пакетом repo от puppetlabs:

pete@ip-172-31-4-61:~$ cat /etc/issue
Ubuntu 14.04.2 LTS \n \l

pete@ip-172-31-4-61:~$ dpkg -l "puppet*"
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                        Version            Architecture       Description
+++-===========================-==================-==================-============================================================
rc  puppet                      3.8.1-1puppetlabs1 all                Centralized configuration management - agent startup and com
ii  puppet-common               3.8.1-1puppetlabs1 all                Centralized configuration management
un  puppet-el                   <none>             <none>             (no description available)
un  puppetdb-terminus           <none>             <none>             (no description available)
ii  puppetlabs-release          1.0-11             all                "Package to install Puppet Labs gpg key and apt repo"
un  puppetlabs-release-devel    <none>             <none>             (no description available)
rc  puppetlabs-release-pc1      0.9.2-1trusty      all                Release packages for the Puppet Labs PC1 repository
ii  puppetmaster                3.8.1-1puppetlabs1 all                Centralized configuration management - master startup and co
ii  puppetmaster-common         3.8.1-1puppetlabs1 all                Puppet master common scripts

ОБНОВЛЕНИЕ: Расположение hieradata dir:

pete@ip-172-31-4-61:~$ tree /etc/puppet/hieradata
/etc/puppet/hieradata
└── ip-10-1-3-7.yaml

Содержание hiera файла узла:

pete@ip-172-31-4-61:~$ cat /etc/puppet/hieradata/ip-10-1-3-7.yaml
---
classes:
  - nginx

nginx::nginx_upstreams:
  'app':
    ensure: present
    members:
      - localhost:5000
  'site':
    ensure: present
    members:
      - site.my-app.com

nginx::nginx_vhosts:
  'localhost':
    proxy: 'http://site'
    proxy_read_timeout: '5'

nginx::nginx_locations:
  app:
    location: '~ "^/(members|login|logout)"'
    vhost: localhost
    proxy: 'http://app'
    proxy_read_timeout: '20'
    ssl: false
    location_cfg_append:
      proxy_set_header:
        - 'X-Forwarded-Host $http_host'

Я довольно уверен, что это не относится к hieradata файлам узла как даже на другом марионеточном ведущем устройстве, где нет никакого файла узла для хоста, я все еще получаю Отладку: hiera (): бэкенд Hiera YAML, начинающий строку отладки.

1
задан 21 July 2015 в 19:55
1 ответ

Убедитесь, что эта строка находится в вашем site.pp :

hiera_include('classes')

Затем попробуйте выполнить эту команду:

puppet master --compile host.domain.tld - -debug 2> & 1 | grep hiera

Это должно дать вам следующий результат:

Debug: hiera(): Hiera YAML backend starting
[...]
Debug: hiera(): Looking up $KEY in YAML backend
Debug: hiera(): Looking for data source common
Debug: hiera(): Looking for data source node/host.domain.tld
Debug: hiera(): Found $KEY in node/host.domain.tld

Выполнение приведенной выше команды без | Часть grep тоже должна дать вам нечто подобное:

Debug: importing '/etc/puppet/environments/production/modules/xxx/manifests/init.pp' in environment production

доказательство того, что классы загружаются.

Данные, которыми вы поделились, не проясняют, назначены ли какие-либо классы клиенту, поэтому, если класс не загружен, не выполняется неявный поиск hiera.

Вот образец моего мастера марионеток:

Info: Not using expired facts for host.corp from cache; expired at 2015-07-21 19:42:37 +0200
Info: Caching facts for host.corp
Info: Caching node for host.corp
Debug: hiera(): Hiera YAML backend starting
Debug: hiera(): Looking up classes in YAML backend
Debug: hiera(): Looking for data source kernel/Linux
Debug: hiera(): Found classes in kernel/Linux
Debug: hiera(): Looking for data source osfamily/RedHat
Debug: hiera(): Looking for data source os/CentOS
Debug: hiera(): Found classes in os/CentOS
Debug: hiera(): Looking for data source node/host.corp
Debug: hiera(): Found classes in node/host.corp
Debug: hiera(): Looking for data source common
Debug: hiera(): Found classes in common
Debug: hiera(): Looking for data source corp

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

hiera --debug -c /etc/puppet/hiera.yaml "sample::foo" bla "::fqdn=host.corp" osfamily='RedHat' "::environment=production"
DEBUG: 2015-07-22 16:49:20 +0200: Hiera YAML backend starting
DEBUG: 2015-07-22 16:49:20 +0200: Looking up sample::foo in YAML backend
DEBUG: 2015-07-22 16:49:20 +0200: Looking for data source node/host.corp
DEBUG: 2015-07-22 16:49:20 +0200: Found sample::foo in node/host.corp
bar

Также проверьте с помощью facter -p если значения, предоставленные вашим узлом, верны.

3
ответ дан 3 December 2019 в 18:38

Теги

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