Puppet - 清單檔案



在 Puppet 中,所有使用 Ruby 程式語言編寫並以 .pp 副檔名儲存的程式都稱為 清單(manifests)。一般來說,所有旨在建立或管理任何目標主機機的 Puppet 程式都稱為清單。所有用 Puppet 編寫的程式都遵循 Puppet 編碼風格。

Puppet 的核心是資源的宣告方式以及這些資源如何表示其狀態。在任何清單中,使用者都可以擁有各種資源的集合,這些資源使用類和定義組合在一起。

在某些情況下,Puppet 清單甚至可以包含條件語句以實現所需狀態。但是,最終一切都歸結為確保所有資源都以正確的方式定義和使用,並且在轉換為目錄後應用的已定義清單能夠執行其設計任務。

清單檔案工作流程

Puppet 清單包含以下元件:

  • 檔案(這些是普通檔案,Puppet 與它們無關,只需將它們拾取並放置到目標位置)

  • 資源

  • 模板(這些可用於在節點上構建配置檔案)。

  • 節點(此處定義了與客戶端節點相關的所有定義)

注意事項

  • 在 Puppet 中,所有清單檔案都使用 Ruby 作為其編碼語言,並以 .pp 副檔名儲存。

  • 許多清單中的“匯入”語句用於在 Puppet 啟動時載入檔案。

  • 為了匯入目錄中包含的所有檔案,您可以以另一種方式使用 import 語句,例如 import 'clients/*'。這將匯入該目錄內所有 .pp 檔案。

Manifest

編寫清單

使用變數

在編寫清單時,使用者可以在清單中的任何位置定義新變數或使用現有變數。Puppet 支援不同型別的變數,但其中一些常用變數例如字串和字串陣列。除此之外,還支援其他格式。

字串變數示例

$package = "vim"  

package {  $package: 
   ensure => "installed" 
}

使用迴圈

當希望對同一組程式碼進行多次迭代直到滿足定義的條件時,可以使用迴圈。它們還用於使用不同的值執行重複性任務。為 10 件不同的事情建立 10 個任務。可以建立一個單一任務並使用迴圈來重複該任務,其中包含想要安裝的不同軟體包。

最常用的方法是使用陣列來使用不同的值重複測試。

$packages = ['vim', 'git', 'curl']  

package { $packages: 
   ensure => "installed" 
}

使用條件語句

Puppet 支援傳統程式語言中大多數可找到的條件結構。條件可用於動態定義是否執行特定任務或應執行一組程式碼。例如 if/else 和 case 語句。此外,像 execute 這樣的條件還將支援類似於條件的屬性,但僅接受命令輸出作為條件。

if $OperatingSystem != 'Linux' { 
   warning('This manifest is not supported on this other OS apart from linux.') 
} else { 
   notify { 'the OS is Linux. We are good to go!': }
} 
廣告