1、puppet簡介node
Puppet是一個客戶端/服務器(C/S)架構的配置管理工具,在中央服務器上安裝puppet-server(puppetmaster),在須要被管理的目標機器上安裝puppet客戶端軟件(puppet client)。當客戶端鏈接上服務器後,定義在服務器上的配置文件會被編譯,而後在客戶端上運行。客戶端每隔半小時主動會和服務器通訊一次,確認配置信息的更新狀況,若是有新的配置信息(或配置信息有變化),配置文件將會被從新編譯並分發到客戶端執行。固然,也能夠在服務器上主動觸發更新指令來強制各客戶端進行配置更新。centos
CentOS6.5_x86_64服務器
如下安裝採用兩臺服務器,一臺是master.cjy.com用來安裝puppet-server服務;一臺是client.cjy.com用來安裝puppet客戶端。架構
Puppet要求全部機器有完整的域名(FQDN),若是沒有DNS服務器提供域名的話,能夠在兩臺機器上設置主機名(注意要先設置主機名再安裝puppet,由於安裝puppet時會把主機名寫入證書,客戶端和服務端通訊須要這個證書):ide
master端工具
# cat /etc/sysconfig/network測試
NETWORKING=yesspa
HOSTNAME=master.cjy.comdebug
# cat /etc/hostsrest
192.168.1.131 master.cjy.com
192.168.1.132 client.cjy.com
client端
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=client.cjy.com
# cat /etc/hosts
192.168.1.131 master.cjy.com
192.168.1.132 client.cjy.com
爲避免沒必要要的麻煩關閉防火牆(服務端客戶端都要作)
#service iptables stop
#setenforce 0
Puppet要求全部機器上的時鐘保持同步,因此須要安裝和啓用ntp服務(若是系統是最小化安裝的,須要額外安裝這個軟件包)
#yum install –y ntpdate
#chkconfig ntpdate on
#ntpdate pool.ntp.org
在master上安裝puppet服務
#yum install –y puppet-server
#chkconfig puppetmaster on
#service puppetmaster start
Puppetmaster運行在TCP的8140端口,能夠用netstat查看:
#netstat -lnutp
在client上安裝puppet客戶端
#yum install –y puppet
Puppet客戶端使用HTTPS和服務端通訊,爲了和服務端通訊必須有合法的SSL認證,第一次運行puppet客戶端的時候會生成一個SSL證書並指定發給puppet服務端。
#puppet agent --no-daemonize --onetime --verbose --debug --server=master.cjy.com
參數說明:
--no-daemonize前臺輸出日誌
--verbose輸入更加詳細的日誌
--debug更加詳細的日誌,排錯的時候用
--test表示測試,就帶一個--test參數就能夠
Puppet服務端(maser)接收到客戶端(client)請求後必須簽字(sign)才能容許客戶端接入,sign後用puppet certlist --all查看會發現client.cjy.com前面多了一個+ 後,表示「加入成功」:
#puppet cert list --all
#puppet cert --sign client.cjy.com /all(對某個或全部請求籤名)
#puppet cert list --all
這樣客戶端和服務端就配置好了,雙方能夠通訊了。
讓證書失效,revoke,僅僅是讓證書失效
# puppet certrevoke client.cjy.com
重啓puppetmaster服務,才能正式生效。
刪除證書,clean,在master上清除證書後重啓服務才能生效
# puppet cert --cleanclient.cjy.com
#/etc/init.d/puppetmaster restart
在client上
# rm –f /var/lib/puppet/ssl/certs/client.cjy.com.pem
或者整個目錄刪除,這樣ca的證書也刪除。
# rm –rf /var/lib/puppet/ssl
這個時候,再申請就能夠了。
如今能夠在服務端寫個小例子來測試一下。這個例子做用很簡單,用來在客戶端的/tmp目錄下新建一個helloworld.txt文件,內容爲hello, world! 在服務端寫代碼:
#vi /etc/puppet/manifests/site.pp
nodedefault {
file {
」/tmp/helloworld.txt」:content => 」hello, world!」;
}
}
在客戶端上執行puppet,運行成功後會在/tmp下看到新生成的helloword.txt文件。
#puppet agent --test --server=master.cjy.com
# cat /tmp/helloworld.txt
hello, world!
查看puppet版本
# puppet --version
查看模塊位置
#puppet config print modulepath
查看報告
#puppet agent –t --summarize
參考文檔:
http://www.vpsee.com/2012/03/install-puppet-on-centos-6-2/ puppet安裝配置及一些操做
http://www.chenshake.com/puppet-study-notes/ puppet安裝配置
http://www.vpsee.com/2012/05/using-puppet-modules-from-example42/ example42的puppet模塊