一、puppet簡介:
Puppet是開源的基于Ruby的系統配置管理工具,依賴于C/S的部署架構。puppet有兩種工作模式,一是直接運作puppetd file.manifest,這種方式做測試非常直接和友善;二是puppetd --server puppetmaster.server.com;前面一種是直接讀取file.mainfest檔案進行配置,後一種是從服務端下載下傳manifest進行配置,也是最常用的工作模式:Puppet是一個C/S架構的配置管理工具,在中央伺服器上安裝puppet-server軟體包(被稱作Puppet master)。在需要管理的目标主機上安裝puppet用戶端軟體(被稱作Puppet Client)。當用戶端連接配接上Puppet master後,定義在Puppet master上的配置檔案會被編譯,然後在用戶端上運作。每個用戶端預設每半個小時和伺服器進行一次通信,确認配置資訊的更新情況,不過建議做好通過crontab來實作即時性,同時也能緩解puppet-server伺服器的負擔。如果有新的配置資訊或者配置資訊已經改變,配置将會被重新編譯并釋出到各用戶端執行。也可以在伺服器上主動觸發一個配置資訊的更新,強制各用戶端進行配置。如果用戶端的配置資訊被改變了,它可以從伺服器獲得原始配置進行校正。
二、puppet安裝:
1 伺服器端與用戶端都需要配置主機名
echo '10.10.0.106 test106.lvs' >> /etc/hosts
echo '10.10.0.50 test50.lvs' >> /etc/hosts
2 伺服器端:
配置host檔案每增加一個用戶端需要在hosts檔案中添加對應的主機記錄,這裡拿兩台伺服器做測試,test106.lvs做伺服器端,test50.lvs做客服端
1) 配置主機名
hostname test106.lvs
2) puppet是由ruby語言開發的,是以正常運作需要安裝ruby環境
yum install -y ruby ruby-lib ruby-rdoc
3) 安裝puppet,centos源沒有包括puppet,需要添加puppet安裝源,我的測試機時centos5(32位),隻需要将下面的位址改為符合自己系統的源位址(根據自己的系統在http://yum.puppetlabs.com/el上選擇相應的安裝源)。
rpm -ivh http://yum.puppetlabs.com/el/5/products/i386/puppetlabs-release-5-1.noarch.rpm
yum instlal -y puppet-server
chkconfig --add puppetmaster
chkconfig puppetmaster on
service puppetmaster start
iptables -I INPUT -t tcp -m tcp --dport 8140 -j ACCEPT
3 用戶端安裝:
yum instlal -y puppet
4 證書申請:
1)用戶端向服務端申請證書:
[root@localhost ~]# puppetd --server test106.lvs --test
warning: peer certificate won't be verified in this SSL session
info: Caching certificate for ca
info: Creating a new SSL certificate request for test50.lvs
info: Certificate Request fingerprint (md5): B2:C1:91:4E:CC:DA:44:74:CE:A9:4E:79:BB:58:2D:5A
Exiting; no certificate found and waitforcert is disabled
2)服務端接受證書申請:
[root@localhost tmp]# puppetca --list
test50.lvs (B2:C1:91:4E:CC:DA:44:74:CE:A9:4E:79:BB:58:2D:5A)
[root@localhost manifests]# puppetca -s test50.lvs
notice: Signed certificate request for test50.lvs
notice: Removing file Puppet::SSL::CertificateRequest test50.lvs at '/var/lib/puppet/ssl/ca/requests/test50.lvs.pem'
3)用戶端取回已經通過的證書:
info: Caching certificate for test50.lvs
info: Caching certificate_revocation_list for ca
info: Caching catalog for test50.lvs
info: Applying configuration version '1337761611'
notice: /Stage[main]//Node[default]/File[/tmp/test.txt]/ensure: defined content as '{md5}3adbbad1791fbae3ec908894c4963870'
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 0.05 seconds
5 舊伺服器重新審批證書
如果用戶端有變動,例如主機名更改,需要重新為該伺服器申請證書,需要在伺服器端删除原該用戶端原有的證書檔案 /var/lib/puppet/ssl/ca/signed/CLIENT.NAME.pem
用戶端操作需要删除ssl目錄 /var/lib/puppet/ssl/
然後重新執行第四步的操作。
三、測試安裝是否成功
1 在伺服器端建立一個/etc/puppet/manifests/site.pp檔案
vim /etc/puppet/manifests/site.pp
node default {
file {
"/tmp/test.txt": content => "hello, world!";
}
建立完需要重新開機服務
service puppetmaster restart
2 用戶端執行如下指令
info: Applying configuration version '1337762096'
notice: Finished catalog run in 0.07 seconds
[root@localhost ~]# cat /tmp/test.txt
hello, world!
四、用戶端設定守護程序
puppetd --server test106.lvs --verbose --waitforcert 60
注釋:--server master 指明伺服器節點位址
--waitforcert 連接配接server檢查的時間間隔
--verbose 輸出備援資訊(可選選項)