Por que meu mestre de marionetes não está usando hiera?

1

Eu tenho um mestre de marionetes (versão 3.8.1) configurado, com um arquivo hiera.yaml que eu acho que está configurado corretamente, assim:

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

Quando eu executo o seguinte comando:

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

(ip-10-1-3-7 é um dos meus nós) Eu não vejo nenhuma informação no catálogo com base nos meus dados hiera. Ainda mais confuso é que não vejo essa linha na depuração:

Debug: hiera(): Hiera YAML backend starting

Que eu vejo em outros mestres de marionetes que eu trabalho com o Hiera

ATUALIZAÇÃO: Eu editei meu arquivo puppet.conf para incluir hiera_config conforme os comentários abaixo, e reiniciei o puppetmaster mas ele ainda não funciona.

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

Estou executando o Ubuntu 14.04, com o pacote repo de 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

UPDATE: Layout do diretório de hieradados:

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

Conteúdo do arquivo do nó 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'

Estou razoavelmente confiante de que não tem a ver com os arquivos do nó de hieradata como em outro mestre de marionetes onde não há arquivo de nó para o host, eu ainda recebo o Debug: hiera (): Hiera YAML linha de depuração.

    
por cubabit 14.07.2015 / 19:48

1 resposta

3

Verifique se esta linha está no seu site.pp :

hiera_include('classes')

Em seguida, tente executar este comando:

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

Isso deve fornecer uma saída assim:

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

Executar o comando acima sem a parte | grep também deve lhe dar algo parecido:

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

provando que as classes estão sendo carregadas.

Os dados que você compartilhou não deixam claro se qualquer classes são atribuídas ao cliente, então se não houver nenhuma classe carregada, nenhuma pesquisa hiera implícita.

Aqui está uma amostra do meu mestre de marionetes:

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

Tente depurar hiera em si também (a amostra aqui é procurar um valor de string com -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

Além disso, verifique com facter -p se os valores fornecidos pelo seu nó estiverem corretos.

    
por 21.07.2015 / 19:21