puppet工作原理:
puppet的目的是讓管理者隻集中于要管理的目标,而忽略實作的細節。puppet既可以在單機上使用,也可以以C/S結構使用。在大規模使用puppet的情況下,通常使用C/S結果,在這種結構中puppet用戶端隻運作puppetclient,puppet伺服器隻運作puppetmaster。
puppet工作流程:

1)用戶端puppet調用facter(facter是通過ssl加密收集及檢測分析用戶端配置資訊的一個工具),facter探測出主機的一些變量,如主機名,記憶體大小,ip位址等。Puppet把這些資訊通過ssl連接配接發送到伺服器器端
2)伺服器端的puppetmaster通過facter工具分析檢測用戶端的主機名,然後找到項目主配置檔案mainfest裡面對應的node配置,并對該部分内容進行解析。Facter發送過來的資訊可以作為變量處理,node牽扯到的代碼才解析,其他沒牽涉的代碼不解析,解析分為幾個階段,首先進行文法檢查,如果文法沒錯,就繼續解析,解析的結果生成一個中間的“僞代碼”,然後把僞代碼發送給用戶端。
3)用戶端接收到“僞代碼”并執行,用戶端把執行的結果發送給伺服器。
4)伺服器把用戶端的執行結果寫入日志。
puppet工作流程中以下兩點值得注意:
1)為了保證安全,client和master之間是基于ssl和證書的,隻有經master證書認證的client可以與master通信。
2)Puppet會讓系統保持在人們所期望的某種狀态并一直維持下去,例如:檢測某個檔案并保證其一直存在,保證ssh服務始終開啟,如果檔案被删除了或者ssh服務被關閉了,puppet下次執行時(預設30分鐘),會重新建立該檔案或者啟動ssh服務。
案例環境:
主機
作業系統
IP位址
主要軟體
puppetmaster
CentOS 6.5x86-64
192.168.1.10
ruby-rdoc-1.8.7.352-13.el6.x86_64
ruby-libs-1.8.7.352-13.el.x86_64
ruby-irb-1.8.7.352-13.el6.x86_64
ruby-1.8.7.352-13.el6.x86_64
puppet-2.7.21.tar.gz
facter-1.7.1.tar.gz
puppetclient1
192.168.1.20
puppetclient2
192.168.1.30
NTP Server
192.168.1.40
1.搭建NTP Server
(1)安裝NTP
(2)修改配置檔案
(3)啟動服務,設定防火牆規則
2.搭建puppetmaster
(1)規劃伺服器主機名
小規模可以修改/etc/hosts檔案,伺服器多的時候我們需要搭建dns伺服器來實作服務通過主機名進行通信,這裡就以/etc/hosts檔案來實作
(2)puppetmaster作為NTP用戶端的配置
(3)安裝ruby
一定安裝一下先後順序安裝,先安裝compat-readline5,也可以一并安裝
安裝完之後檢查ruby版本
(4)建立使用者
(5)安裝facter
(6)安裝puppet
複制配置檔案
修改檔案屬性
建立puppet主目錄
(7)puppet服務證書請求與簽名
生産環境中iptables預設是全部關閉的
修改配置檔案
在[main]标題下添加一下一行,配置伺服器子產品路徑
啟動puppet主程式
3.搭建puppetclient (注意:puppetclient2的配置過程與puppetclient1類似,主機名改為client2.itzhushou.cn即可,其他都一樣)
vim /etc/sysconfig/network
vim /etc/hosts
(2)伺服器時間同步
安裝完成後檢查ruby版本
(6)安裝puppet
生産環境中iptables預設是全部關閉的 service iptables stop
修改client檔案
在[main]标題下添加以下一行,設定伺服器的域名
申請與注冊
client端:
分别在puppetclient1和puppetclient2上進行注冊
此時可以按Ctrl+C結束,因為puppet一直在等待任務,但是已經從server檢視到申請資訊。
master端:
檢視申請注冊的用戶端
将未注冊的用戶端進行注冊
可以通過目錄去檢視已經注冊的用戶端
此時用戶端已經完成證書的請求與簽名。