Puppet客户端应用空类(使用默认参数)

时间:2016-02-23 09:54:41

标签: couchdb puppet httpbackend hiera puppet-enterprise

问题: 在我的环境中运行puppet代理的服务器正在接收空[classes](没有参数),而不是存储在他们的Hiera文档中的预期参数。这会导致puppet模块使用null参数运行,这反过来会导致成功运行默认值而不是实际预期值(这显然是不需要的和破坏性的行为)。

导致问题触发的原因是什么? 我们的Hiera基于CouchDB文档数据库(我将在后面进一步扩展)。当CouchDB服务停止时,木偶代理(在询问木偶大师的新目录时)会收到空的[类](没有参数),而不是存储在他们的Hiera文档中的预期参数。

我的环境架构:

  • NetworkLoadBalancer(Cisco Ace)下的4个Puppet主服务器
  • 1 puppet ca server
  • NetworkLoadBalancer(Cisco Ace)背后的2个Hiera服务器(couchDB 1.6.0)
  • 所有服务器操作系统都是RedHat 6.3
  • Puppet version 3.7.4
  • Puppet master使用Http_Backend v1.0.1
  • 与hiera服务器通信
  • 使用puppetDB和postgress sql来保存服务器库存

我们如何模拟问题?

  • 通过停止Hiera服务器上的CouchDB服务 - hiera01(只是其中之一),我们可以触发问题。

  • puppet-masters日志显示已经对hiera01服务器开放的会话超过20分钟的“连接被拒绝...”错误

  • 当couchdb服务停止时,会话未被关闭。

  • 新请求将路由到hiera02。

  • 客户端服务器,他们的会话从master通过hiera01获取目录 - 获得了类的默认参数!!!

Puppet master的主要配置文件

[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = %vardir/ssl {group = service, mode = 640}
ca = false
certname = master_server_01.domain
dns_alt_names = puppet-master-ace.domain, puppet-master-ace
use_srv_records = true
pluginsource = puppet:///plugins
pluginfactsource = puppet:///pluginfacts
reports = log, foreman
enviromentpath = $confdir/enviroments
basemodulepath = $confdir/modules

[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig

[master]
storeconfigs = true
storeconfigs_backend = puppetdb
always_cache_features = true

Hiera.yaml(主服务器)

---
:backends:
 - http
 - yaml
:hierarchy:
 - "%{fqdn}"
 - "%{enviroment}"
 - common
:http:
 :host: hieraserverace.domain
 :use_auth: true
 :auth_user: admin
 :auth_pass: Passowrd
 :api_user: apiUser
 :api_pass: apipassword
 :merge_behavior: deeper
 :port: 5984
 :output: json
 :failure: graceful
 :path:
  - "/%{environment}/%{fqdn}"
  - "/%{environment}/%{osfamily}"
  - "/%{environment}/%{enviroment}"
  - "/%{environment}/common"

:yaml:
 :datadir: /etc/puppet/hieradata

备注

  • 环境是生产和更新版本差不多 不可能的。
  • hieradata目录为空(不使用yaml后端)

谢谢!

PS:由于我们正在运行与互联网断开连接的分类环境,因此上传日志文件是一个非常复杂的过程。

0 个答案:

没有答案