修改系統配置
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日。