我实际上在我的Debian Jessie上运行了puppet 3.7.2和hiera 1.3.4。
我的木偶配置是:
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
#prerun_command=/etc/puppet/etckeeper-commit-pre
#postrun_command=/etc/puppet/etckeeper-commit-post
server = puppetmaster01.prd.lord-y.net
certname = master.localdomain
environment = prod
condir = /etc/puppet
report = false
show_diff = true
trace = true
runinterval=60
usecacheonfailure = false
ignorecache = true
environmentpath=$confdir/environments
[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
certname = master.localdomain
#modulepath=$confdir/environments/$environment/modules:$confdir/modules
[agent]
report = true
show_diff = true
我的hiera配置:
---
:backends:
- yaml
:yaml:
:datadir: "/etc/puppet/environments/%{::environment}/hieradata"
:hierarchy:
- "%{::fqdn}"
- global
:logger: console
和我的木偶环境:
的/ etc /木偶/环境/ {PROD,UAT,偏差} ==> environment.conf hieradata显示模块
在我的environment.conf中:
manifest = /etc/puppet/environments/{prod,uat,dev}/manifests/site.pp
modulepath = /etc/puppet/environments/{prod,uat,dev}/modules
在/ etc / puppet / environments / {prod,uat,dev} / hieradata中,我有我的主机定义和每个环境的global.yaml。
我的问题是,当主服务器在目录构建期间执行Hiera查找时,似乎不会从global.yaml
获取数据。
例如,如果我在Puppet主机上执行此命令,它会正确地回退到global.yaml
以提供正确的结果......
hiera varnish::dev::settings::site::backend_name ::environment=prod
...但是在提供目录请求的过程中查找相同的密钥时,找不到任何值。
答案 0 :(得分:0)
如果通过命令行工具进行Hiera查找会产生与目录构建过程中主人执行的等效查找不同的结果,那么唯一可能的解释就是身份和环境领域。由于Hiera没有记录对环境变量的依赖,最可能的结论是,你的global.yaml
文件不能被木偶主进程读取,该进程使用可能与你不同的非特权UID和GID运行在交互式shell中使用。检查这些文件的权限,和/或在主服务器凭据下运行命令。