puppet工做原理:node
puppet的目的是讓管理員只集中於要管理的目標,而忽略實現的細節。puppet既能夠在單機上使用,也能夠以C/S結構使用。在大規模使用puppet的狀況下,一般使用C/S結果,在這種結構中puppet客戶端只運行puppetclient,puppet服務器只運行puppetmaster。web
puppet工做流程:vim
1)客戶端puppet調用facter(facter是經過ssl加密收集及檢測分析客戶端配置信息的一個工具),facter探測出主機的一些變量,如主機名,內存大小,ip地址等。Puppet把這些信息經過ssl鏈接發送到服務器器端安全
2)服務器端的puppetmaster經過facter工具分析檢測客戶端的主機名,而後找到項目主配置文件mainfest裏面對應的node配置,並對該部份內容進行解析。Facter發送過來的信息能夠做爲變量處理,node牽扯到的代碼才解析,其餘沒牽涉的代碼不解析,解析分爲幾個階段,首先進行語法檢查,若是語法沒錯,就繼續解析,解析的結果生成一箇中間的「僞代碼」,而後把僞代碼發送給客戶端。ruby
3)客戶端接收到「僞代碼」並執行,客戶端把執行的結果發送給服務器。服務器
4)服務器把客戶端的執行結果寫入日誌。ssh
puppet工做流程中如下兩點值得注意:ide
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 |
CentOS 6.5x86-64 | 192.168.1.20 |
|
puppetclient2 |
CentOS 6.5x86-64 | 192.168.1.30 |
|
NTP Server |
CentOS 6.5x86-64 | 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便可,其餘都同樣)
(1)規劃服務器主機名
vim /etc/sysconfig/network
vim /etc/hosts
(2)服務器時間同步
(3)安裝ruby
安裝完成後檢查ruby版本
(4)建立用戶
(5)安裝facter
(6)安裝puppet
複製配置文件
修改文件屬性
(7)puppet服務證書請求與簽名
生產環境中iptables默認是所有關閉的 service iptables stop
修改client文件
在[main]標題下添加如下一行,設置服務器的域名
申請與註冊
client端:
分別在puppetclient1和puppetclient2上進行註冊
此時能夠按Ctrl+C結束,由於puppet一直在等待任務,可是已經從server查看到申請信息。
master端:
查看申請註冊的客戶端
將未註冊的客戶端進行註冊
能夠經過目錄去查看已經註冊的客戶端
此時客戶端已經完成證書的請求與簽名。