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

1、Puppet概述node

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

 

2、Puppet構架服務器

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


3、應用場景負載均衡

統一安裝、配置管理軟件ide

統一配置系統優化參數工具

按期檢測服務是否運行優化

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


4、Puppet工做原理設計

 


流程簡述以下:

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

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

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

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

五、客戶端接收到「僞代碼」,而且執行。

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

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

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



5、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模板

6、Puppet Dashboard

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

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



7、Puppet LoadBlancer

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



構架說明:

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

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

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

相關文章
相關標籤/搜索