选择更安全的方式执行你的puppet更新

生产环境中,puppet的更新有需要节点自动更新的,有需要通过puppetmaster推送更新的,还有需要节点更新时间离散的。下面讲解三种更新方式

2.7 Puppet更新方式
2.7.1 节点定时更新

[root@agent1 ~]# vim /etc/puppet/puppet.conf
[main]
 server=puppetserver.rsyslog.org  #指向puppetserver服务器
[agent]
 runinterval=5  #前期方便测试可采用客户端自动更新的方式,设置agent 5秒钟去同步
2.7.2 节点离散更新(需要测试)
使用puppet的inline_template功能结合cron任务计划执行agent服务端分散更新
cron { "run-puppet": 
command => "/usr/sbin/ puppet agent --server=puppetserver.rsyslog.org --test >/dev/null  2>&1", 
minute => inline_template("<%= hostname.hash % 60 %>"), 
}
备注:节点数比较多的情况下,为了减轻puppet server端同一时间的压力,可以考虑方式二。
实现原理:根据客户端的主机名做哈希表(每个主机名产生的哈希值具有唯一性),并作为计划任务左右的分钟或者小时,每个客户端会在过去的每小时的不同分钟数运行puppet,这个三列技术是有用的随机任何的cron作业,提高了可能性,因为他们不会互相干扰。Hash生成的数值可以使无限大,上例中只是生成0-60,也就是限制了最大值为60。
2.7.3 服务端推送更新(puppet kick)
1)、修改agent端的主配置文件
[root@agent1 ~]# vim /etc/puppet/puppet.conf
[agent]
listen = true
...
2)、修改/etc/sysconfig/puppet
[root@agent1 ~]# vim /etc/sysconfig/puppet 
PUPPET_SERVER=puppetserver.rsyslog.org
...
3)、新建namespaceauth.conf文件
[root@agent1 ~]# vim /etc/puppet/namespaceauth.conf
[puppetrunner]
allow puppetserver.rsyslog.org 
4)、修改auth.conf文件(在path /前添加)
[root@agent1 ~]# vim /etc/puppet/auth.conf
path /run
method save
allow puppetserver.rsyslog.org
auth any 
path /
auth any
5)、重启agent端
6)、在puppetmaster端执行puppetrun命令测试
[root@puppetserver ~]# puppetrun -p 10 --host agent1.rsyslog.org
Triggering agent1.rsyslog.org
Getting status
status is success
agent1.rsyslog.org finished with exit code 0
Finished
备注:如果主机比较多,可创建hosts.txt文件,然后将需要更新的节点主机名添加到hosts.txt文件中,然后跟上 --host `cat hosts.txt`参数即可

 

 

新开自动化运维管理群:296934942欢迎各界大牛加入探讨!