Puppet自動化工具工作原理介紹

一、Puppet概述

Puppet是開源的基於Ruby的系統配置管理工具,基於C/S的部署架構。是一個爲實現數據中心自動化管理而設計的配置管理軟件,它使用跨平臺語言規範,管理配置文件、用戶、軟件包、系統服務等。客戶端默認每隔半小時會和服務器通信一次,確認是否有更新。當然也可以配置主動觸發來強制客戶端更新。這樣就把日常的系統管理任務代碼化了,代碼化的好處是可以分享,保存,避免重複勞動,也可以快速恢復以及快速的大規模部署服務器。

 

二、Puppet構架

puppet的服務器端保存着所有的對客戶端服務器的配置代碼,在puppet裏面叫做manifest. 客戶端下載manifest之後,可以根據manifest對服務器進行配置,例如軟件包管理,用戶管理和文件管理等等。Puppet架構如下:


三、應用場景

統一安裝、配置管理軟件

統一配置系統優化參數

定期檢測服務是否運行

快速替換集羣時設備的角色


四、Puppet工作原理

 


流程簡述如下:

1、客戶端puppetd向master發起認證請求。

2、Puppet Master告訴client是合法的。

3、客戶端puppetd開始調用facter,facter可以探測出主機的一些變量,例如主機名,內存大小,IP地址等。pupppetd 把這些信息通過ssl連接發送到服務器端。

4、服務器端的puppet Master 檢測客戶端的主機名,然後找到manifest裏面對應的node配置, 並對該部分內容進行解析,解析分爲幾個階段,語法檢查,如果語法錯誤就報錯。如果語法沒錯,就繼續解析,解析的結果會生成一箇中間的“僞代碼”(catalog),然後把僞代碼發給客戶端。

5、客戶端接收到“僞代碼”,並且執行。

6、客戶端在執行時判斷有沒有file文件,如果有就向Fileserver發起請求。

7、客戶端繼續判斷有沒有配置Report。如果配置,就把執行結果發送給服務器。

8、服務器端把客戶端的執行結果寫入日誌。並可以發送給報告系統(DashBoard)



五、Puppet組織結構

Puppet的目錄結構描述如下:

|-- puppet.conf            # 主配置配置文件 

 |-- fileserver.conf         #文件服務器配置文件 

 |-- auth.conf             #認證配置文件  (只允許域內認證)

 |-- autosign.conf          #自動驗證配置文件 

 |-- tagmail.conf          # 郵件配置文件(將錯誤信息發送) 

 |-- manifests       # 文件存儲目錄(puppet會先讀取該目錄的.pp文件<site.pp>) 

 |-- nodes 

 | |  | puppetclient.pp   #puppet解析主配置文件所有的模塊和節點都在此文件裏include

 | |-- site.pp              # 定義puppet相關的變量和默認配置

 | |-- modules.pp        # 加載class類模塊文件(include nginx)

 |--  modules          # 定義模塊

 | --nginx             # 以nginx爲例 

 |           |--  file

 |           |--  manifests

 |           |     |-- init.pp       #類的定義,類名必須與模塊名相同

 |           |--- templates    # 模塊配置目錄,可以被模塊的manifests引用 

 |           |     |-- nginx.erb #erb模板

六、Puppet Dashboard

Puppet Dashboard可以爲Puppet環境添加一個圖形用戶界面(GUI)。Puppet Dashboard可以顯示主機上Puppet的運行結果,並且可以提供一個節點分類工具來配置主機。

可以從https://downloads.puppetlabs.com/dashboard/下載puppet-dashboard,安裝後的截圖如下:



七、Puppet LoadBlancer

當需要部署的服務器越來越多(超過1000臺)時,Puppet Master解析工作將非常繁重,同時文件分發也將成爲瓶頸,再加上很多的Client需要做CA認證,單臺Puppet將無法滿足需求,此時就需要對Puppet做LoadBlancer,建議採用的方式是通過Nginx做負載分配,典型的Puppet集羣架構如下:



構架說明:

1、nginx監聽port 8140端口,將除文件下發之外的請求,代理轉發給下面的三個puppet Master任意一個,實現負載均衡。

2、每個puppet Master運行在18140端口,提供配置管理。

3、CA認證系統從puppet Master獨立出來,也運行在18140端口,用兩臺服務器做HA,實現高可用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章