認識puppet

 

  1. 參考資料:Pro puppet 
  2.              http://docs.puppetlabs.com 

what is puppet?

    puppet是基於Ruby,遵循GPLv2協議,能以C/S模式運行,也獨自運行;puppet一種Linux/Unix平臺的集中配置管理系統,使用自有的描述語言,可管理配置文件、用戶、cron任務、軟件包、系統服務等。puppet把這些系統實體稱爲資源,puppet的設計目的是簡化對這些資源的管理以及妥善處理資源間的依賴關係。

why using puppet?

     隨着管理服務器數量的增多,並且這些服務器使用不同的操作系統,運行不同的服務,使用不同版本軟件,且其配置也不一樣,爲了減輕工作壓力和提升管理效率,puppet就派上用場了。

puppet的模型

puppet有着簡單的操作模型,而且易於理解和實施,這種模型有三部分組成:調度部署、配置語言和資源抽樣層、事物層

Deployment(部署和調度)

       Puppet通常採用間的C/S模式,在C/S模式下,所有的clientspuppet agent)和一個或幾個servers(puppet master)使用SSL協議進行交互。puppet client週期的(默認半小時runinterval=30)server發送一次請求,獲取其最新的配置信息,並且嚴格按照配置文件來配置puppet client,也即是保持與server端配置信息同步;配置完成後向puppet server反饋一條信息,如果出錯,也會向puppet server反饋一條信息。

Puppet後臺運行每半小時執行一次,不方便修改,人們發現通過手動或者crontab來調度更合適。這樣可以精確控制每臺客戶端的執行時間。分散執行時間也可以減輕壓力。

Puppet的工作流程:

n  客戶端puppetd通過facter探測出這臺主機的一些變量如主機名、內存、IP地址等信息,然後puppetd通過SSL把這些信息送到puppet master

n  Puppetmaster檢測到客戶端的主機名,然後找到manifests裏面對應的node配置,並對這段內容進行解析,facter送過來的信息可作爲變量進行處理,解析包括:語法檢查、生成僞代碼、把僞代碼發給客戶端。

n  客戶端收到位僞代碼後就會執行,並把執行結果發送給服務器。

n  服務器再把客戶端的執行結果寫入日誌。

Caution:第一,puppet clientclients的時間必須保持同步;第二,爲了保證安全,puppet serverclient之間基於ssl和證書的,只有經過master認證的node纔可以與master通信;第三,puppet會讓系統一直保持在你期望的狀態。

Configuration Language And Resource Abstraction Layer(配置語言和資源抽象層)

       Puppet使用描述性語言定義配置項,配置項在puppet中稱爲資源。Puppet描述性語言與其他配置工具的明顯區別在於描述性語言可以聲明你的配置項的狀態;比如定義軟件包應該被安裝或者某個服務應該處於啓動狀態。

Configuration Language(配置語言)

Puppet描述性語言的實質是什麼?讓我們看一個簡單的例子:有這樣一個環境包括redhat LinxUbuntuSolaris主機且在這些主機上安裝vim。手工來做,我們需要編寫包括以下幾項的腳本:

l  連接主機

l  檢查vim是否安裝

l  如果未安裝,對不同的平臺使用合適的命令安裝vim

l  可能反饋執行結果,確保操作成功完成

Puppet處理的過程完全不同,puppetvim定義一個配置資源。資源由資源類型、資源名稱和一系列的屬性組成。

       type { “title”:

              attribute => value,

       }

Resource Abstraction Layer(資源抽象層)

       資源被創建後,當agent連接master時,puppet負責管理這些資源的細節。Puppet知道不同平臺和操作系統管理特定資源類型的差異,並處理這些差異。每種類型的資源有多種提供者,一個軟件提供者包括如何使用特定的包管理工具管理軟件包。

       agent連接master時,puppet使用Facter工具返回agent的相關信息,包括正在運行的操作系統,然後puppet爲操作系統選擇合適的軟件包提供者,並使用這個提供者檢查vim是否被安裝,如果軟件包未被安裝,puppet就會安裝它,反之,puppet什麼都不做。

Transactional Layer

        事務處理層是puppet的引擎,puppet事務涉及每臺主機的配置過程,包括:

l  解釋和編譯配置

l  把編譯好的配置發送到agent

l  agent上應用配置

l  把結果報告給master

Puppet第一步先分析你的配置並計算如何在agent上應用它們。這樣做,puppet創建一張表表示所有資源以及它們之間的關係,還有與agent之間的關係。Puppet將按照這些關係來決定每一臺主機應用資源的順序。這個模型是Puppet的強大特性之一。

接着Puppet爲每一個agent取得相應的資源並將它們編譯成爲"目錄"。然後將目錄發送到各個主機並通過Puppet agent來應用它們。最後程序運行的結果以報告的形式發回給master

事務層允許配置在主機上被重複創建和應用。這稱爲冪等,意思是多個程序的相同操作會導致同樣的結果。Puppet配置可以在主機上安全地運行多次,並且每次運行都能得到同樣的結果,Puppet使用這一點來保證配置的一致性。

不過Puppet並不具有完全的事務性。因爲事物並沒有被記錄(除了日誌),所以無法像一些數據庫那樣對事務進行回滾。不過你可以使用無操作模式(noop)的事務模型來測試配置的執行,這不會導致實際上的改變。

 

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