選擇更安全的方式執行你的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`參數即可

推送方法,在服務端運行命令

puppet?kick?-p?10?–host?客戶端 或?puppetrun?-p?10?–host?客戶端