天天看點

一步一步學會puppet(二)--子產品和類

上一篇主要介紹了puppet的基本工作原理和資源的相關初步使用;

這一篇主要介紹puppet中很重要的2個概念:子產品和類;

===================================================================

1 子產品

   1.1 需求

   1.2 定義

   1.3 詳細說明

   1.4 子產品的目錄組織結構

   1.5 子產品管理

2 類

   2.1 定義

   2.2 詳細說明

   2.3 類的分類

   2.4 類的聲明

   2.5 執行個體

1.1 需求

若要定義一個完整的服務(如nginx服務),依賴單一的manifest檔案(如nginx.pp)遠遠不夠,因為一般的服務都需要依賴于衆多外部資源,如類繼承、靜态檔案複制、模闆等,故一個完整的服務就需要利用子產品來實作了;

1.2 定義

為了實作某種完備功能而組織成一個獨立的、自我包含的目錄結構;

一句話就是:子產品就是一個目錄結構,目錄名就是子產品名;

1.3 詳細說明

一般需要把manifest檔案分解成易于了解的結構,例如将類檔案、配置檔案甚至包括後面将提到的子產品檔案等分類存放,并且通過某種機制在必要時将它們整合起來,這種機制即“子產品”;

隻要在某子產品中定義了一個類,就可以在任何manifest檔案中使用它,puppet會自動去查找并裝載包含了這個類的定義的manifest檔案;

是以,可以在puppet上提供多個子產品,并按需要在manifest檔案任意使用它們。于是,基于子產品機制的puppet的主manifest檔案就可以變得很小,也更易讀并能基于政策進行定制;

1.4 子產品的目錄組織結構

子產品的存放位置:

如建構一個nginx子產品,子產品目錄是/etc/puppet/modules/nginx

manifests/:清單存儲目錄

init.pp:包含一個與子產品名稱同名的類,同時聲明其它子類

*.pp:一個清單通常隻包含一個類,且建立的清單檔案名與類名相同,如子類nginx::web對應web.pp清單檔案

files/:檔案存儲目錄

通路路徑:puppet:///modules/Module_Name/File_Name

templates/:模闆存儲目錄

*.erb:使用模闆函數template()裝載并運作其中子產品語言,運作後會生成靜态檔案;

通路路徑:template(‘Module_Name/Template_Name’)

lib/:ruby插件存儲目錄,用于實作一些自定義的功能

tests/:目前子產品的使用說明和樣例;

spec/:為lib目錄中的插件提供使用說明和樣例;

在子產品根目錄下,通常還需包含如下文檔

LICENSE # 版本說明

Modulefile # 子產品說明

README # 其它說明

1.5 子產品管理

線上下載下傳子產品站點:https://forge.puppetlabs.com

顯示本地已安裝的子產品:puppet module list

搜尋子產品:puppet module search Module_Name

安裝子產品:puppet module install Module_Name

2.1 定義

為了實作通用目标或目的組織在一起的一個或多個資源,即命名的代碼塊;

2.2 詳細說明

類在某位置建立之後可在puppet全局使用;

puppet的類可以繼承,也可以包含子類;

類的名稱隻能以小寫字母開頭,可以包含小字字母、數字和下劃線;

每個類都會引入一個新的變量scope,這意味着在任何時候通路類中的變量時,都得使用其完全限定名稱,如${nginx::params::nx_temp_dir};

2.3 類的分類

不帶參數的類:可通過include或資源式的方式進行聲明使用;

帶參數的類:同一個類在不同的OS上可能會略有不同,是以需要通過擷取相應系統的fact來實作有差別對待;然而,萬一相應的OS沒有輸出類所期望的fact或者是類依賴于非fact因素時,此機制将無法滿足需求;此時就需要使用帶參數的類來完成此類功能,同時在聲明類時為其參數傳遞相應的值即可完成傳參功能;隻能使用資源式的聲明方式;

2.4 類的聲明

類定義後,隻有被調用才會執行,調用類的操作就叫做“聲明一個類”

聲明類的方式主要有4種:

include Class_Name # 使用include聲明類

class {Class_Name: } # 使用資源式的聲明方式,可以聲明帶參數的類

require # 與include類似

ENC

2.5 執行個體

本文出自 “” 部落格,請務必保留此出處

繼續閱讀