具有环境管理的global.yaml puppet / hiera

时间:2016-03-24 10:01:31

标签: global puppet environment hiera

我实际上在我的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

...但是在提供目录请求的过程中查找相同的密钥时,找不到任何值。

1 个答案:

答案 0 :(得分:0)

如果通过命令行工具进行Hiera查找会产生与目录构建过程中主人执行的等效查找不同的结果,那么唯一可能的解释就是身份和环境领域。由于Hiera没有记录对环境变量的依赖,最可能的结论是,你的global.yaml文件不能被木偶主进程读取,该进程使用可能与你不同的非特权UID和GID运行在交互式shell中使用。检查这些文件的权限,和/或在主服务器凭据下运行命令。