当前位置: 首页 > 服务器 > 服务器知识 > 正文

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

时间:2014-05-20

生产环境中,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`参数即可

本文出自 “www.kisspuppet.com” 博客,请务必保留此出处http://kisspuppet.blog.51cto.com/418026/1257718

查看本栏目更多精彩内容:http://www.bianceng.cn/Servers/zs/