Usando o Satellite 6 que vem com o Foreman 1.6.0.53.
Por padrão, a documentação do Puppetlabs afirma que a configuração hiera deve estar em $config/hiera.yaml
.
# puppet config print confdir hiera_config
confdir = /etc/puppet
hiera_config = /etc/puppet/hiera.yaml
Olhando para a nossa configuração hiera:
# cat /etc/puppet/hiera.yaml
---
:backends: yaml
:yaml:
:datadir: /var/lib/hiera
:hierarchy:
- users
- groups
- global
O arquivo de dados existe:
# cat /var/lib/hiera/users.yaml
---
users:
bfernandez:
uid: 300
fullname: Belmin Fernandez
E, para testar, eu uso a CLI do hiera e um puppet apply
:
# hiera --conf=/etc/puppet/hiera.yaml --debug -h users
DEBUG: 2015-05-06 14:11:37 -0400: Hiera YAML backend starting
DEBUG: 2015-05-06 14:11:37 -0400: Looking up users in YAML backend
DEBUG: 2015-05-06 14:11:37 -0400: Looking for data source users
DEBUG: 2015-05-06 14:11:37 -0400: Found users in users
DEBUG: 2015-05-06 14:11:37 -0400: Looking for data source groups
DEBUG: 2015-05-06 14:11:37 -0400: Looking for data source global
{"bfernandez"=>{"uid"=>300, "fullname"=>"Belmin Fernandez"}}
# puppet apply -e '$foo = hiera_hash(users) notify { $foo: }'
Notice: Compiled catalog for foosat.example.com in environment production in 0.08 seconds
Notice: {"bfernandez"=>{"uid"=>300, "fullname"=>"Belmin Fernandez"}}
Notice: /Stage[main]/Main/Notify[{"bfernandez"=>{"uid"=>300, "fullname"=>"Belmin Fernandez"}}]/message: defined 'message' as '{"bfernandez"=>{"uid"=>300, "fullname"=>"Belmin Fernandez"}}'
Notice: Finished catalog run in 0.30 seconds
Até agora, tudo parece bom. No entanto, quando faço referência hiera_hash('users')
em um módulo e o aplico a um nó, recebo este erro:
May 6 13:49:04 foo1 puppet-agent[8688]: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find data item users in any Hiera data file and no default supplied at /etc/puppet/modules/accounts/manifests/init.pp:10 on node foo1.example.com
Alguma ideia do que devo olhar? Sinto que estou perdendo algo do lado de Foreman, talvez.
Atualização 1:
Por @lsd, tentei usar /etc/hiera.yaml
para a configuração criando um link simbólico. Testei com hiera CLI para confirmar a configuração:
# hiera --conf=/etc/hiera.yaml --debug -h users
DEBUG: 2015-05-06 14:31:13 -0400: Hiera YAML backend starting
DEBUG: 2015-05-06 14:31:13 -0400: Looking up users in YAML backend
DEBUG: 2015-05-06 14:31:13 -0400: Looking for data source defaults
DEBUG: 2015-05-06 14:31:13 -0400: Cannot find datafile /var/lib/hiera/defaults.yaml, skipping
DEBUG: 2015-05-06 14:31:13 -0400: Looking for data source users
DEBUG: 2015-05-06 14:31:13 -0400: Found users in users
DEBUG: 2015-05-06 14:31:13 -0400: Looking for data source groups
DEBUG: 2015-05-06 14:31:13 -0400: Looking for data source global
{"bfernandez"=>{"uid"=>300, "fullname"=>"Belmin Fernandez"}}
Ainda recebi o erro no agente, portanto, isso não resolveu o problema.
Depois de pensar sobre isso no meu trajeto, decidi verificar o SELinux e lá estava:
Mudou os contextos de arquivo no arquivo hiera para
puppet_etc_t
(se alguém souber de algo mais apropriado, comente):Trabalhando agora. Espero que isso ajude alguém.