PUPPET集中配置管理系統較之於其餘管理工具具備穩定性,可以管理服務器的整個管理週期,並使其配置有條不紊,會讓你的系統同配置要求保持一致。本次經過 C/S 架構的配置使用Puppet 自帶的語言來配置 Server 上的文件系統,Cron任務等,而後在各個服務器實現配置。經過對 Manifests 內 Nodes 與 Site.pp 等配置的編輯和修改,只需在 Server 端進行簡單的編輯就能夠實現集中配置管理。在 Nginx配置時, Nginx 會在啓動時直接調用Puppet,而默認每半個小時的 Client 從 Server 的更新讓配置更加緊密同步,成功配置完成以後 Client 會向 Server 端反饋一個消息,若配置失敗,也會反饋一個消息。linux
原理圖:json
系統環境:rhel 6.5 (selinux&iptables disabled)vim
Puppet master : 192.168.122.101 server1.example.comruby
Puppet client :192.168.122.102 server2.example.com服務器
192.168.122.103 server3.example.com架構
*******DATE必定要同步,不然驗證會失敗*******ide
一,安裝puppet包工具
YUM 源及其所需安裝包url
[puppet]spa
name=puppet
baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/
gpgcheck=0
[ruby]
name=ruby
baseurl=http://yum.puppetlabs.com/el/6Server/dependencies/x86_64/
gpgcheck=0
#Yum install
rubygems-1.3.7-5.el6.noarch.rpm
facter-2.4.4-1.el6.x86_64.rpm
hiera-1.3.4-1.el6.noarch.rpm
rubygem-json-1.5.5-3.el6.x86_64.rpm
ruby-shadow-2.2.0-2.el6.x86_64.rpm
ruby-augeas-0.4.1-3.el6.x86_64.rpm
puppet-3.8.1-1.el6.noarch.rpm
puppet-server-3.8.1-1.el6.noarch.rpm(只有SERVER1服務端才安裝SERVER,Client不安裝此包)
#Date 命令檢查各個服務器的時間是否一致
二.客戶端請求認證
puppet cert list
puppet cert list-all
puppet cert sign server2.example.com(許可server2 向 server1創建鏈接)
ERROR 說明server2並無向server1請求認證,固然,由於咱們尚未發送過請求信息。
處理步驟:
1..) 在 agent端執行 puppet agent server server1.example.com--no-daemonize -vt 來給master發送認證請求。
client 向 master 發出證書驗證請求,而後等待 master 簽名並返回證書。
參數 --server 指定了須要鏈接的 puppet master 的名字或是地址,默認鏈接名爲 「puppet」的主機,如要修改默認鏈接主機能夠修改/etc/sysconfig/puppet 文件中的 PUPPET_SERVER=puppet 選項
參數 --no-daemonize 是 puppet 客戶端運行在前臺
參數 -vt指test與 verbose(使客戶端輸出詳細的日誌)
2.) 而後在master執行 puppet cert sign server2.example.com 來簽名認證agent上的請求。
3.) 最後agent 端再次執行 puppet agent server server1.example.com就能獲取認證。
在agent端獲得上述圖的結果就證實認證成功。
那麼如何刪除認證從新認證呢?以下圖所示:
系統給定了它的處理方法,我就再也不贅述了。
可是要記住,master和agent 都要刪除認證信息並刷新的。
從新認證步驟跟以前的步驟相同的。
如要同時簽名全部證書,執行如下命令:
# puppet cert sign--all
# puppet certclean desktop2.example.com
#刪除簽名證書
自動驗證:
在 server 端, 編輯 puppet.conf 文件:
[main]
autosign =true #容許全部客戶端的認證
在/etc/puppet目錄下建立 autosign.conf 文件,內容以下:
*.example.com #表示容許全部 example.com 域的主機
# service puppetmaster reload
在 client 端只需執行:
server puppetstart便可。
三,對puppet內資源編輯定義
Master:
[root@server1puppet]# pwd
/etc/puppet/
[root@server1puppet]# vim /etc/puppet/manifests/site.pp
file {
"/mnt/ADORU":
content => "ADORU.COM\n";
# source =>"puppet:///files/passwd"
}
[root@server1puppet]# vim /etc/puppet/fileserver.conf
在最後一行加上
[files]
path /etc/puppet/files
allow *
AGENT:
[root@server3puppet]# puppet agent --server server1.example.com --no-daemonize -vt
[root@server3puppet]# cat /mnt/ADORU
ADORU.COM 能夠看到server3的內容與咱們的MASTER規定的內容相同。
因而咱們在MASTER下site.pp所寫的內容就被傳至了AGENT的/mnt/ADORU
MASTER:
此次咱們換做直接將/etc/puppet/files/passwd 文件同步到AGENT上面
[root@server1puppet]# mkdir /etc/puppet/files/
[root@server1puppet]# cp /etc/passwd /etc/puppet/files/
[root@server1puppet]# md5sum files/passwd(用來與AGENT做比對,肯定內容一致)
ce995678da5101eee20bfb6f2425e9b9 files/passwd
[root@server1puppet]# vim ./manifests/site.pp
file {
"/mnt/ADORU":
# content => "ADORU.COM\n";
source =>"puppet:///files/passwd"
}
在AGENT上執行puppetagent --server server1.example.com --no-daemonize -vt
能夠看到咱們的內容確實獲得更新,md5發生了改變
並且/mnt/ADORU的內容發生變化,其md5值與上面的 passwd文件md5值相等爲ce995678da5101eee20bfb6f2425e9b9
那麼內容呢,咱們在AGENT上cat /mnt/ADORU
沒錯呢,內容也是同樣的,除此以外,puppet默認半小時同步一次(手動也能夠),即便你不當心把AGENT的內容改了,它也能依靠這種原理自動還原回去,這充分體現了Puppet的穩定性.
好了,這就是開始的PUPPET安裝和配置,接下來的詳細內容將在下次向你們介紹.