puppet

puppet

集中配置管理系統
puppet是一種Linux、Unix、windows平台的集中配置管理系統,使用自有的puppet描述語言,可管理配置文件、用戶、cron任務、軟件包、系統服務等。[1]puppet把這些系統實體稱之為資源,puppet的設計目标是簡化對這些資源的管理以及妥善處理資源間的依賴關系。puppet采用C/S星狀的結構,所有的客戶端和一個或幾個服務器交互。每個客戶端周期的(默認半個小時)向服務器發送請求,獲得其最新的配置信息,保證和該配置信息同步。每個puppet客戶端每半小時(可以設置)連接一次服務器端, 下載最新的配置文件,并且嚴格按照配置文件來配置客戶端. 配置完成以後,puppet客戶端可以反饋給服務器端一個消息. 如果出錯,也會給服務器端反饋一個消息.
    中文名: 外文名:puppet 适用領域: 所屬學科: 性質:集中配置管理系統 特點:使用自有的puppet描述語言 設計目标:簡化對這些資源的管理

修改系統配置

puppet 通過管理資源的方式來管理系統, 例如管理某個軟件是否要安裝,是安裝最新的還是安裝了就行. 管理某個服務是否開啟, 管理某個文件的屬性,内容等等. 所有的資源都有對應的幾個屬性可以設置. 通過設置屬性的方式來管理資源. 有一種特殊的屬性可以用在所有的資源上面,這種屬性叫做 metaparams ( 元參數或者元屬性).

資源之間的關系

支持資源之間的關系配置是puppet的關鍵特性之一. 一個資源的變更可以對另一個資源産生一個動作.例如 /etc/apache.conf這個資源有改動,可以讓/etc/init.d/apache 這個資源 reload一下.假如一個資源依賴另一個資源,那麼puppet會優先配置被依賴的資源,因此如果你的配置文件沒有準備好,對應的服務是不會先啟動的.

語言資源

puppet的全部就是管理資源,因此puppet語言的焦點就是處理這些資源,下面是一個基本的管理單個資源的例子.

file {"/etc/hosts": owner = root, group = root, mode = 644}

上面的例子給出了定義一個資源所需要的所有組件,類型,名字和屬性. 定義了一個 file 資源, 資源的title(标題)是 "/etc/hosts", 資源的屬性裡面設置了該文件屬于哪個用戶和組,以及文件的權限.

也可以在一個大括号裡面定義多個資源,通過分号來區分.

你可以把多個相關的資源定義在一起,組成一個類.可以在其他的代碼段include這個類.puppet還支持有限制的類的繼承,作用就是在子類裡面的屬性可以複蓋父類裡面的屬性.

字符串

幾乎所有的東西和符号在puppet裡面都被看作是字符串,包括數字和布爾值. 但是如果你用引号把true和false引起來,他們會被當做字符串,例如你想賦值給某個資性"yes"的 字符串.

變量

puppet除facter變量外,也可以自定義變量,但不允許你在同一個類裡面對一個變量進行兩次賦值.

$myvar = value123

條件語句

Puppet支持常見的條件語句,使得你能根據不同的條件導入不同的資源定義。如if、case、另外puppet從版本0.24.6開始支持比較運算符。

數組

puppet 非常有限的支持數組這種類型,你可以創建數組,并且給他們賦值,但是你不能删除它們.數組用的最多的情況就是上面ssh例子裡面,資源依賴哪種情況. 或者是一次管理多個相同類型的資源.例如:user { [bin, adm]: ensure => present }

自定義資源

puppet裡面有一個非常有用的語法結構,叫做define, 通過define可以把多個資源包裝成一個資源,或者把一個資源包裝成一個模型,便于使用.例如,在debian裡面管理一個apache虛拟機非常簡單,把一個虛拟主機的配置文件放到/etc/sites-available/裡面,然後做一個符号鍊接到/etc/sites-enabled目錄. 你可以為你每個虛拟主機複制同樣的配置代碼.

版本

puppet 有企業版和社區版,目前版本是2.6。

社區版是免費的,有些常用的功能。

企業版是收費的,支持vmware虛拟機的部署和審計功能。但如果10個節點以下是免費的。

2013年1月13日。

相關詞條

相關搜索

其它詞條