Puppet - 概述



Puppet 是一款由 Puppet Labs 開發的配置管理工具,用於自動化基礎設施管理和配置。Puppet 是一款非常強大的工具,有助於實現基礎設施即程式碼的概念。此工具使用 Ruby DSL 語言編寫,有助於將完整的基礎設施轉換為程式碼格式,可以輕鬆地進行管理和配置。

Puppet 遵循客戶端-伺服器模型,其中任何叢集中的一個機器充當伺服器,稱為 puppet master,其他機器充當客戶端,稱為節點上的從屬伺服器。Puppet 能夠從頭開始管理任何系統,從初始配置到任何特定機器的生命週期結束。

Puppet 系統的功能

以下是 Puppet 最重要的功能。

冪等性

Puppet 支援冪等性,這使其獨一無二。與 Chef 類似,在 Puppet 中,可以安全地對同一臺機器多次執行相同的配置集。在此流程中,Puppet 檢查目標機器的當前狀態,並且僅在配置有任何特定更改時才會進行更改。

冪等性有助於在整個生命週期中管理任何特定機器,從機器的建立、機器的配置更改到生命週期結束。Puppet 的冪等性功能非常有助於保持機器多年更新,而不是在配置發生任何更改時多次重建同一臺機器。

跨平臺

在 Puppet 中,藉助使用 Puppet 資源的資源抽象層 (RAL),可以定位系統的指定配置,而無需擔心實現細節以及配置命令如何在系統內部工作,這些細節在底層配置檔案中定義。

Puppet - 工作流程

Puppet 使用以下工作流程將配置應用於系統。

Workflow
  • 在 Puppet 中,Puppet master 首先要做的是收集目標機器的詳細資訊。使用存在於所有 Puppet 節點上的因素(類似於 Chef 中的 Ohai),它獲取所有機器級配置詳細資訊。這些詳細資訊被收集併發送回 Puppet master。

  • 然後,puppet master 將檢索到的配置與定義的配置詳細資訊進行比較,並根據定義的配置建立目錄並將其傳送到目標 Puppet 代理。

  • 然後,Puppet 代理應用這些配置以使系統處於所需狀態。

  • 最後,一旦將目標節點置於所需狀態,它就會向 Puppet master 傳送報告,這有助於 Puppet master 瞭解系統當前狀態在哪裡,如目錄中定義的那樣。

Puppet - 關鍵元件

以下是 Puppet 的關鍵元件。

Key Components

Puppet 資源

Puppet 資源是建模任何特定機器的關鍵元件。這些資源有自己的實現模型。Puppet 使用相同的模型來獲取任何特定資源的所需狀態。

提供程式

提供程式基本上是 Puppet 中使用的任何特定資源的執行者。例如,包型別“apt-get”和“yum”都適用於包管理。有時,在特定平臺上可能有多個提供程式可用。儘管每個平臺始終都有一個預設提供程式。

清單

清單是資源的集合,這些資源在函式或類中耦合以配置任何目標系統。它們包含一組 Ruby 程式碼以配置系統。

模組

模組是 Puppet 的關鍵構建塊,可以定義為資源、檔案、模板等的集合。它們可以輕鬆地分發到正在定義的各種作業系統中,前提是它們是相同的型別。由於它們可以輕鬆分發,因此可以多次使用同一個模組和相同的配置。

模板

模板使用 Ruby 表示式來定義自定義內容和變數輸入。它們用於開發自定義內容。模板在清單中定義,並複製到系統上的某個位置。例如,如果要使用可自定義的埠定義 httpd,則可以使用以下表達式。

Listen <% = @httpd_port %>

在這種情況下,httpd_port 變數在引用此模板的清單中定義。

靜態檔案

靜態檔案可以定義為有時需要執行特定任務的一般檔案。它們可以使用 Puppet 從一個位置簡單地複製到另一個位置。所有靜態檔案都位於任何模組的 files 目錄中。清單中對檔案的任何操作都是使用 file 資源完成的。

廣告