Foreman1.6.0.53に付属のSatellite6を使用します。
デフォルトでは、Puppetlabsの documentation は、hiera構成を_$config/hiera.yaml
_に含める必要があると述べています。
_# puppet config print confdir hiera_config
confdir = /etc/puppet
hiera_config = /etc/puppet/hiera.yaml
_
Hiera構成を見てください:
_# cat /etc/puppet/hiera.yaml
---
:backends: yaml
:yaml:
:datadir: /var/lib/hiera
:hierarchy:
- users
- groups
- global
_
データファイルが存在します:
_# cat /var/lib/hiera/users.yaml
---
users:
bfernandez:
uid: 300
fullname: Belmin Fernandez
_
そして、それをテストするために、私はhieraのCLIと_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
_
これまでのところ、すべてが良さそうです。ただし、モジュールでhiera_hash('users')
を参照してノードに適用すると、次のエラーが発生します。
_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
_
私が何を見るべきかについてのアイデアはありますか?おそらくフォアマン側で何かが足りないような気がします。
@lsdごとに、シンボリックリンクを作成する代わりに、構成に_/etc/hiera.yaml
_を使用してみました。 hiera CLIでテストして、構成を確認しました。
_# 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"}}
_
それでもエージェントでエラーが発生したため、問題は解決しませんでした。
通勤中にそれについて考えた後、SELinuxをチェックすることにしました。
[root@foosat hiera]# grep yaml /var/log/audit/audit.log | head -n1
type=AVC msg=audit(1430926955.728:75727): avc: denied { getattr } for pid=17099 comm="Ruby" path="/var/lib/hiera/users.yaml" dev="dm-2" ino=25185161 scontext=system_u:system_r:passenger_t:s0 tcontext=unconfined_u:object_r:var_lib_t:s0 tclass=file
Hieraファイルのファイルコンテキストをpuppet_etc_t
に変更しました(誰かがより適切なことを知っている場合は、コメントしてください):
[root@foosat hiera]# semanage fcontext -a -s system_u -t puppet_etc_t "/var/lib/hiera(/.*)?"
[root@foosat hiera]# restorecon -R -v .
restorecon reset /var/lib/hiera/users.yaml context unconfined_u:object_r:var_lib_t:s0->unconfined_u:object_r:puppet_etc_t:s0
今働いています。これが他の誰かに役立つことを願っています。