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 | 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端:
查看申請註冊的客戶端
將未註冊的客戶端進行註冊
可以通過目錄去查看已經註冊的客戶端
此時客戶端已經完成證書的請求與簽名。