
- Puppet 教程
- Puppet - 首頁
- 基礎 Puppet
- Puppet - 概述
- Puppet - 架構
- Puppet - 安裝
- Puppet - 配置
- Puppet - 環境配置
- Puppet - Master
- Puppet - Agent 設定
- Puppet - SSL 證書設定
- 安裝和配置 r10K
- Puppet - 驗證設定
- Puppet - 編碼風格
- Puppet - 清單檔案
- Puppet - 模組
- Puppet - 檔案伺服器
- Puppet - Facter 和事實
- 高階 Puppet
- Puppet - 資源
- Puppet - 資源抽象層
- Puppet - 模板
- Puppet - 類
- Puppet - 函式
- Puppet - 自定義函式
- Puppet - 環境
- Puppet - 型別和提供程式
- Puppet - RESTful API
- Puppet - 即時專案
- Puppet 有用資源
- Puppet - 快速指南
- Puppet - 有用資源
- Puppet - 討論
Puppet - 概述
Puppet 是一款由 Puppet Labs 開發的配置管理工具,用於自動化基礎設施管理和配置。Puppet 是一款非常強大的工具,有助於實現基礎設施即程式碼的概念。此工具使用 Ruby DSL 語言編寫,有助於將完整的基礎設施轉換為程式碼格式,可以輕鬆地進行管理和配置。
Puppet 遵循客戶端-伺服器模型,其中任何叢集中的一個機器充當伺服器,稱為 puppet master,其他機器充當客戶端,稱為節點上的從屬伺服器。Puppet 能夠從頭開始管理任何系統,從初始配置到任何特定機器的生命週期結束。
Puppet 系統的功能
以下是 Puppet 最重要的功能。
冪等性
Puppet 支援冪等性,這使其獨一無二。與 Chef 類似,在 Puppet 中,可以安全地對同一臺機器多次執行相同的配置集。在此流程中,Puppet 檢查目標機器的當前狀態,並且僅在配置有任何特定更改時才會進行更改。
冪等性有助於在整個生命週期中管理任何特定機器,從機器的建立、機器的配置更改到生命週期結束。Puppet 的冪等性功能非常有助於保持機器多年更新,而不是在配置發生任何更改時多次重建同一臺機器。
跨平臺
在 Puppet 中,藉助使用 Puppet 資源的資源抽象層 (RAL),可以定位系統的指定配置,而無需擔心實現細節以及配置命令如何在系統內部工作,這些細節在底層配置檔案中定義。
Puppet - 工作流程
Puppet 使用以下工作流程將配置應用於系統。

在 Puppet 中,Puppet master 首先要做的是收集目標機器的詳細資訊。使用存在於所有 Puppet 節點上的因素(類似於 Chef 中的 Ohai),它獲取所有機器級配置詳細資訊。這些詳細資訊被收集併發送回 Puppet master。
然後,puppet master 將檢索到的配置與定義的配置詳細資訊進行比較,並根據定義的配置建立目錄並將其傳送到目標 Puppet 代理。
然後,Puppet 代理應用這些配置以使系統處於所需狀態。
最後,一旦將目標節點置於所需狀態,它就會向 Puppet master 傳送報告,這有助於 Puppet master 瞭解系統當前狀態在哪裡,如目錄中定義的那樣。
Puppet - 關鍵元件
以下是 Puppet 的關鍵元件。

Puppet 資源
Puppet 資源是建模任何特定機器的關鍵元件。這些資源有自己的實現模型。Puppet 使用相同的模型來獲取任何特定資源的所需狀態。
提供程式
提供程式基本上是 Puppet 中使用的任何特定資源的執行者。例如,包型別“apt-get”和“yum”都適用於包管理。有時,在特定平臺上可能有多個提供程式可用。儘管每個平臺始終都有一個預設提供程式。
清單
清單是資源的集合,這些資源在函式或類中耦合以配置任何目標系統。它們包含一組 Ruby 程式碼以配置系統。
模組
模組是 Puppet 的關鍵構建塊,可以定義為資源、檔案、模板等的集合。它們可以輕鬆地分發到正在定義的各種作業系統中,前提是它們是相同的型別。由於它們可以輕鬆分發,因此可以多次使用同一個模組和相同的配置。
模板
模板使用 Ruby 表示式來定義自定義內容和變數輸入。它們用於開發自定義內容。模板在清單中定義,並複製到系統上的某個位置。例如,如果要使用可自定義的埠定義 httpd,則可以使用以下表達式。
Listen <% = @httpd_port %>
在這種情況下,httpd_port 變數在引用此模板的清單中定義。
靜態檔案
靜態檔案可以定義為有時需要執行特定任務的一般檔案。它們可以使用 Puppet 從一個位置簡單地複製到另一個位置。所有靜態檔案都位於任何模組的 files 目錄中。清單中對檔案的任何操作都是使用 file 資源完成的。