Puppet - 環境配置



在 Puppet 中,所有環境都具有 **environment.conf** 檔案。此檔案可以在 master 為任何節點或分配到該特定環境的所有節點提供服務時覆蓋多個預設設定。

位置

在 Puppet 中,對於所有定義的環境,environment.conf 檔案位於其主環境的頂層,緊挨著清單和模組目錄。例如,如果您的環境位於預設目錄 **(Vipin/testing/environment)** 中,則測試環境的配置檔案位於 **Vipin/testing/environments/test/environment.conf**。

示例

# /etc/testingdir/code/environments/test/environment.conf  
# Puppet Enterprise requires $basemodulepath; see note below under modulepath". 
modulepath = site:dist:modules:$basemodulepath  
# Use our custom script to get a git commit for the current state of the code: 
config_version = get_environment_commit.sh 

格式

Puppet 中的所有配置檔案都以相同的方式使用相同的 INI 類格式。**environment.conf** 檔案遵循與其他檔案(如 puppet.conf 檔案)相同的 INI 類格式。environment.conf 和 **puppet.conf** 之間的唯一區別在於 environment.conf 檔案不能包含 [main] 部分。environment.conf 檔案中的所有設定必須位於任何配置部分之外。

值中的相對路徑

大多數允許的設定都接受檔案路徑或路徑列表作為值。如果任何路徑是相關路徑,則它們以不帶前導斜槓或驅動器號開頭 - 它們主要相對於該環境的主目錄解析。

值中的插值

Environment.conf 設定檔案能夠使用其他設定的值作為變數。有多個有用的變數可以插入到 environment.conf 檔案中。以下是幾個重要變數的列表:-

  • **$basemodulepath** - 用於在 modulepath 設定中包含目錄。Puppet Enterprise 使用者通常應包含此 modulepath 值,因為 Puppet 引擎使用 **basemodulepath** 中的模組。

  • **$environment** - 作為 config_version 指令碼的命令列引數使用。您只能在 config_version 設定中插入此變數。

  • **$codedir** - 用於查詢檔案。

允許的設定

預設情況下,Puppet environment.conf 檔案僅允許覆蓋配置中的四個設定,如下所示。

  • Modulepath
  • Manifest
  • Config_version
  • Environment_timeout

Modulepath

這是 environment.conf 檔案中的關鍵設定之一。Puppet 預設載入 modulepath 中定義的所有目錄。這是 Puppet 載入其模組的路徑位置。需要明確設定它。如果未設定上述設定,則 Puppet 中任何環境的預設 modulepath 將為:-

<MODULES DIRECTORY FROM ENVIRONMENT>:$basemodulepath 

Manifest

這用於定義主清單檔案,Puppet master 在啟動和編譯定義的清單(將用於配置環境)生成的目錄時將使用該檔案。在此,我們可以定義單個檔案、檔案列表,甚至包含需要按定義的字母順序進行評估和編譯的多個清單檔案的目錄。

需要在 environment.conf 檔案中明確定義此設定。否則,Puppet 將使用環境預設清單目錄作為其主清單。

Config_version

Config_version 可以定義為用於標識目錄和事件的明確版本。當 Puppet 預設編譯任何清單檔案時,它會將配置版本新增到生成的目錄以及在 Puppet master 將任何定義的目錄應用於 Puppet 節點時生成的報告中。Puppet 執行指令碼以執行所有上述步驟,並將所有生成的輸出用作 Config_version。

環境超時

它用於獲取有關 Puppet 應使用多少時間來載入給定環境的資料的詳細資訊。如果在 puppet.conf 檔案中定義了值,則這些值將覆蓋預設超時值。

示例 environment.conf 檔案

[master] 
   manifest =  $confdir/environments/$environment/manifests/site.pp 
   modulepath =  $confdir/environments/$environment/modules

在上面的程式碼中,**$confdir** 是環境配置檔案所在的目錄的路徑。**$environment** 是正在對其進行配置的環境的名稱。

生產就緒環境配置檔案

# The environment configuration file  
# The main manifest directory or file where Puppet starts to evaluate code  
# This is the default value. Works with just a site.pp file or any other  
manifest = manifests/  
# The directories added to the module path, looked in first match first used order:  
# modules - Directory for external modules, populated by r10k based on Puppetfile  
# $basemodulepath - As from: puppet config print basemodulepath  
modulepath = site:modules:$basemodulepath  
# Set the cache timeout for this environment.  
# This overrides what is set directly in puppet.conf for the whole Puppet server  
# environment_timeout = unlimited  
# With caching you need to flush the cache whenever new Puppet code is deployed  
# This can also be done manually running: bin/puppet_flush_environment_cache.sh  
# To disable catalog caching:  
environment_timeout = 0  
# Here we pass to one in the control repo the Puppet environment (and git branch)  
# to get title and essential info of the last git commit
config_version = 'bin/config_script.sh $environment' 
廣告