Puppet - 環境



在軟體開發和交付模型中,存在不同型別的測試環境,用於測試特定產品或服務。作為標準實踐,主要有三種環境:開發、測試和生產,每種環境都有自己的配置。

Puppet 支援管理多個環境,與 Ruby on Rails 的方式類似。建立這些環境的關鍵因素是提供一種易於管理不同 SLA 協議級別的機制。在某些情況下,機器始終需要保持執行,沒有任何容忍度,並使用舊軟體。而其他環境則保持最新狀態,用於測試目的。它們用於對更重要的機器進行升級。

Puppet 建議堅持使用標準的生產、測試和開發環境配置,但是,它也允許使用者根據需要建立自定義環境。

環境目標

按環境劃分設定的主要目標是,Puppet 可以擁有模組和清單的不同來源。然後,可以在測試環境中測試配置更改,而不會影響生產節點。這些環境還可以用於在不同的網路來源上部署基礎設施。

在 Puppet Master 上使用環境

環境的重點是測試需要傳送給客戶端的清單、模組和檔案模板。因此,必須配置 Puppet 以提供特定於環境的這些資訊的來源。

Puppet 環境的實現方法很簡單,只需向伺服器的 puppet.conf 檔案中新增預環境部分,併為每個環境選擇不同的配置源。然後,這些預環境部分將優先於主部分使用。

[main] 
manifest = /usr/testing/puppet/site.pp 
modulepath = /usr/testing/puppet/modules 
[development] 
manifest = /usr/testing/puppet/development/site.pp 
modulepath = /usr/testing/puppet/development/modules

在上面的程式碼中,開發環境中的任何客戶端都將使用位於目錄 **`/usr/share/puppet/development`** 中的 site.pp 清單檔案,並且 Puppet 將在 **`/usr/share/puppet/development/modules`** 目錄中搜索任何模組。

執行 Puppet 時,無論是否使用任何環境,都將預設為 site.pp 檔案以及主配置部分中 manifest 和 modulepath 值指定的目錄。

實際上只有少數配置有意義地進行預環境配置,所有這些引數都圍繞著指定要用於編譯客戶端配置的檔案。

以下是引數。

  • **Modulepath** − 在 Puppet 中,作為基本標準模式,最好有一個所有環境共享的標準模組目錄,然後是一個可以儲存自定義模組的預環境目錄。模組路徑是 Puppet 搜尋所有與環境相關的配置檔案的位置。

  • **Templatedir** − 模板目錄是儲存所有相關模板版本的位置。模組應優先於這些設定,但是它允許在每個環境中擁有給定模板的不同版本。

  • **Manifest** − 這定義了哪個配置用作入口點指令碼。

使用多個模組,Puppet 有助於獲得配置的模組化。可以在 Puppet 中使用多個環境,如果主要依賴於模組,則效果更好。透過將更改封裝在模組中,更容易將更改遷移到環境。檔案伺服器使用特定於環境的模組路徑;如果從模組而不是單獨掛載的目錄進行檔案服務,則此環境將能夠獲取特定於環境的檔案,最終當前環境也將在清單檔案中以 `$environment` 變數的形式可用。

設定客戶端環境

與環境配置相關的全部配置都在 puppet.conf 檔案中完成。要指定 Puppet 客戶端應使用哪個環境,可以在客戶端的 puppet.conf 檔案中為 environment 配置變數指定一個值。

[puppetd] 
environment = Testing 

配置檔案中的上述定義定義了配置檔案所在的哪個環境,在本例中為 testing。

也可以使用以下命令列指定:

#puppetd -–environment = testing

或者,Puppet 還支援在環境配置中使用動態值。開發人員無需定義靜態值,而是可以建立自定義事實,根據其他客戶端屬性或外部資料來源建立客戶端環境。首選方法是使用自定義工具。這些工具能夠指定節點的環境,並且通常更擅長指定節點資訊。

Puppet 搜尋路徑

Puppet 使用簡單的搜尋路徑來確定需要在目標機器上應用哪個配置。同樣,Puppet 中的搜尋路徑在嘗試獲取需要應用的適當值時非常有用。Puppet 在下面列出的多個位置搜尋需要應用的值。

  • 在命令列中指定的值
  • 在特定於環境的部分中指定的值
  • 在特定於可執行檔案的部分中指定的值
  • 在主部分中指定的值
廣告