一、前言:
Puppet是Puppet Labs基于ruby語言開發的自動化系統配置工具,可以以C/S模式或獨立模式運作,支援對所有UNIX及類UNIX系統的批量配置和管理,最新版本也開始支援對Windows作業系統有限的一些管理。
Puppet适用于伺服器管理的整個過程,比如初始安裝、配置、更新以及系統下線。
Puppet原理:
Puppet的工作細節分成如下幾個步驟:
1、用戶端puppetd調用facter,facter會探測出這台主機的一些變量如主機名、記憶體大小、IP位址等。然後puppetd把這些資訊發送到服務端。
2、伺服器端的puppetmaster檢測到用戶端的主機名,然後會到manifest裡面對應的node配置,然後對這段内容進行解析,facter送過來的資訊可以作為變量進行處理的,node牽涉到的代碼才解析,其它的代碼不解析,解析分幾個過程:文法檢查、然後會生成一個中間的僞代碼,然後再把僞代碼發給客戶機。
3、用戶端接收到僞代碼之後就會執行,用戶端再把執行結果發送給伺服器。
4、伺服器再把用戶端的執行結果寫入日志。
二、安裝:
安裝 puppet-Server:yum install puppet,puppet-server
首先在伺服器端和用戶端配置好hostname,因為puppet是基于hostname來檢測的,同時都要修改hosts檔案:
修改主機名的指令:
cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
vim /etc/hosts
192.168.159.151 master.com
192.168.159.120 slave.com
Puppet 需要 Ruby 的支援,如果要檢視指令行幫助的話需要額外 ruby-rdoc 這個軟體包:
yum install puppet-server -y 【這一步為預設安裝ruby ruby-libs ruby-rdoc等軟體包】
/etc/init.d/puppetmaster start
關閉 iptables,關閉selinux
iptables -F
sed -i ‘/SELINUX/S/enforce/disabled/’ /etc/selinux/config
需在puppet.conf中添加一個條目,certname,配置項certname指定了puppet master的名字,如下
[master]
certname=master.com
添加certname配置的目錄有兩個:它會使證書相關的問題解決起來更容易,解決了在目前許多linux主機上都存在的Ruby SSL代碼錯誤,這個錯誤導緻了我們需要手動指定puppet master的SSL證書使用的名字。同時為我們的puppet建立一個DNS别名,添加到hosts和DNS配置中。
接下來我們需要添加site.pp,它包含了我們想要管理的配置的基本資訊。
site.pp檔案告訴puppet去哪裡尋找并載入指定的用戶端配置,這個檔案放在/etc/puppet/manifests中,首先建立site.pp,是因為沒有它,puppet将拒絕啟動。
啟動我們的puppetmaster
#systemctl start puppetmaster
添加字段
[main]
server=master.com
之後啟動服務
#systemctl start puppet
三、證書申請:
Puppet用戶端與伺服器端是通過SSL隧道通信的,用戶端安裝完成後,需要向伺服器端申請證書:
1. 首次連接配接伺服器端會發起證書申請,在用戶端執行指令如下:
puppet agent --server master.com --no-daemonize -v -d --noop --test
執行上面的指令,用戶端将生成證書,并且把證書簽名請求發到伺服器端。
2. 在伺服器端可以用puppet cert –list指令檢視到申請證書的用戶端主機名。
3. puppet cert -s指令可以為特定的主機頒發證書,puppet cert –s and –a 表示給所有的主機頒發證書
例如:puppet cert –s slave.com 為用戶端頒發證書。
四、 驗證puppet配置:
在服務端寫個例子測試一下。這個例子作用很簡單,用來在用戶端的/tmp目錄下建立一個 test.txt 檔案,内容為:hello,test!在服務端編寫代碼:【伺服器端不需要建立這個檔案】
vim /etc/puppet/manifests/site.pp
node default {
file {
"/tmp/test.txt": content => "helo,test!";
}
}
master針對于slave.puppet.com的配置完成了,然後去agent上執行。
五、用戶端測試:
#puppet agent --test --server master.com
此時,用戶端将會從伺服器下載下傳并執行,在/tmp目錄下生成叫做1.txt的檔案。
最後檢視cat /tmp/test.txt
helo,test!
此時puppet伺服器端和用戶端安裝完畢。
本文轉自 優果馥思 51CTO部落格,原文連結:http://blog.51cto.com/youguofusi/2053034