天天看點

《Puppet實戰手冊》——2.4 使用子產品

本節書摘來自異步社群《puppet實戰手冊》一書中的第2章,第2.4節,作者:【英】john arundel著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

能夠使puppet配置清單清晰并且易于維護的最重要的方式之一就是将它們組織成子產品。

子產品是将相關的事物進行組合的一種簡單方式。例如,一個webserver子產品應該包括讓一台機器作為web伺服器所必需的一切:apache的配置檔案、虛拟主機模闆和一些必要的用來部署它們(apache的配置檔案、虛拟主機模闆)的puppet代碼。

把代碼拆分成不同的子產品可以使它們更易于複用和共享,這也是組織配置清單的最合理的方式。下例将建立一個子產品來管理memcached(一款在web應用程式中非常常用的記憶體緩存系統)。

操作步驟

下面這些步驟向讀者展示了如何建立一個示例子產品。

1. 在puppet代碼倉庫中建立下面的這些目錄:

2. 參考如下内容建立modules/memcached/manifests/init.pp檔案:

3. 參考如下内容,建立modules/memcached/files/memcached.conf檔案:

4. 把下面的内容加入nodes.pp檔案中:

5. 運作puppet來檢查新配置是否生效:

6. 檢查memcached服務是否已經運作。

工作原理

子產品具有特定的目錄結構。但并非所有這些目錄都必須存在。如果它們存在的話,則應該按照這樣的結構進行組織。

所有的配置清單檔案(那些包含puppet代碼的檔案)都要放在配置清單目錄中。在上面的例子中,memcached的類被定義在檔案manifests/init.pp中,這個檔案會在puppet運作時自動導入。

在memcached類中,引用了memcached.conf檔案。

正如讀者在關于puppet的檔案伺服器以及自定義挂載點那一章所了解的那樣,source參數的值告知puppet要在下面的目錄中尋找檔案:

更多參考

要嘗試學習喜歡“子產品”,因為它們會讓你的pupept生涯輕松許多。它們并不複雜。然而,更多的實踐和經驗将有助于判斷配置代碼何時應組合成子產品,以及如何更好地組織子產品結構。這裡有一些可以快速進步的技巧。

模闆

如果需要在一個子產品中使用模闆,可将其放置在子產品的templates目錄,并在代碼中引用它,如下所示:

puppet就會在下面的目錄中找到它:

fact、函數、類型和提供者

子產品還可以包含自定義的fact、自定義函數、自定義類型和提供者。有關這些内容的更多資訊,可參閱第8章。

自動生成子產品布局

使用者還可以使用puppet module generate指令為新子產品生成目錄結構,而不是手動建立。更多細節可參閱第8章。

第三方子產品

使用者可以下載下傳由其他人提供的子產品,并像自己建立的子產品一樣在配置清單中使用它們。欲了解更多關于此方面的資訊,可參閱8.10節。