天天看點

Puppet快速入門!

1

企業中管理環境的痛點

Puppet快速入門!

痛點1:在企業内部,部署4台伺服器,每台伺服器包含 JDk,Tomcat,AngularJs 等等看起來不是大問題,可以人工部署。但是,當需要部署同樣的配置到100台伺服器上,運維的同學該怎麼辦?

Puppet快速入門!

痛點2:設想公司需要更新某一個軟體,例如 MongoDb,當更新完成之後發現有問題,需要復原。如何做復原?隻能依次解除安裝新版本,安裝舊版本,費時費力,效率低下。

痛點3:開發和運維最常見的對話: 

運維:”哥們,你寫的代碼有問題,我部署之後完全不能用!” 

開發:”不可能!我在本地跑得好好的,你是不是有東西沒配?”

解決方法

Puppet快速入門!
Puppet快速入門!

基礎設施即代碼。用代碼描述基礎設施,包括機器 ip,作業系統,安裝的軟體,第三方依賴的路徑,部署包的路徑。

使用同一份代碼,不同的配置檔案在統一的虛拟化平台建立開發環境,測試環境,部署環境。這樣能夠屏蔽各種環境之間的差異,實作基礎設施即代碼。

2

目前的開源配置管理工具

Puppet快速入門!

配置管理工具有兩種實作方式:推送或者拉取。

基于推送的工具是 Ansible 和 Salt。基于拉取的工具有 Puppet 和 Chef。

3

Puppet 的作用以及工作原理

Puppet 能幹什麼?

Puppet快速入門!

舉個例子:我想在某個幾個機器上快速部署 Mysql伺服器,用 Puppet 怎麼實作?

1. 在 Puppet 主節點機器上安裝 Puppet  Mysql子產品。

Puppet快速入門!

2. 在 Puppet 主節點上寫site.pp配置檔案,描述需要部署的 Mysql。

Puppet快速入門!

3. 在目标機上執行 puppet agent –t。

4. 完成!Mysql 已經在目标機上安裝好。

Puppet快速入門!

Puppet 工作原理是什麼?

Puppet快速入門!
Puppet快速入門!

Puppet 主要用于部署,配置管理,以及伺服器管理。 Puppert 由Master 和 Agent組成,Master 負責管理所有的配置檔案, Agent 節點向Master拉取配置檔案。

      Puppet 如何實作 Master 節點的高可用?

Puppet快速入門!

它使用了Multi-Master的模式來實作高可用,這也是精典的高可用實作方式:備援+故障轉移。

主從節點如何通信?

Puppet快速入門!
Puppet快速入門!

主從節點通信是 基于SSL 的受信任通信,一旦主節點和從節點建立了 SSL 雙向認證,之後發自從節點的請求都會經過 SSL 加密傳輸到主節點,主節點向從節點的資料傳輸也是加密的。

Puppet快速入門!

Puppet的組成部分

Puppet快速入門!
Puppet快速入門!

Puppet 由 Classes ,Resources,Manifests 和 Modules 組成。

1. Resource – 任何檔案,配置可以做為一個 Resource。例如

Puppet快速入門!

它描述了檔案的資訊,以及檔案在目标機上的将來時狀态。

2. Classes – Classes 是一組 Resource 的集合,用來描述一組服務或應用。

3. Manifest – 由Class生成若幹個 Manifest。在 Manifest 裡可以使用某個子產品,将這個子產品部署到節點上。

Puppet快速入門!

4. Module – 由若幹個 Manifest 組合成一個 Module,用來高效的組織你的 Puppet 代碼,以便将來重用。Puppet 社群已經有了非常豐富的 Module,你可以直接下載下傳使用。

Puppet快速入門!
Puppet快速入門!

Puppet 的工作流程

Puppet快速入門!
Puppet快速入門!

1.     Facts – Node 節點向 Puppet 主節點報告自己的資訊,使得自己處于一個被發現的狀态。 Facts 是一組鍵值對,可以是 IP 位址,或者是作業系統 資訊。

2.      Catalog 是一組資源的關系集合,Puppet 使用 Catalog 來描述某一個節點應該被配置成什麼樣子。

3.     當 Node 節點完成的配置,它會向 Puppet 主節點報告任務完成。

如何管理開源社群的已有子產品?

Puppet快速入門!

不重複造車輪,是軟體開發中是很關鍵的理念。重複利用現有的子產品,能夠加速你的環境搭建的速度,而且更加的穩定,雖然開源社群已經有了非常豐富的共用 Module,但每次連接配接外網去下載下傳 Module 又帶來了網速慢,下載下傳不穩定的問題。 Artifactory 5.1以上版本已經支援了 Puppet 倉庫,以及Chef 倉庫。将 Artifactory 設定為 Puppet 的 Module 源,即可實作遠端Puppet Module倉庫的私有化,讓你的環境釋出變得實時,可控。

Puppet快速入門!

4

總結

使用 Puppet可以幫助運維團隊快速,可重複的釋出一個計算環境,并且安裝配置檔案安裝指定的軟體,服務,實作基礎設施即代碼。