Puppet-manifest-files
Puppet-マニフェストファイル
Puppetでは、Rubyプログラミング言語を使用して記述され、*。pp *の拡張子で保存されたすべてのプログラムは*マニフェスト*と呼ばれます。 一般的に、ターゲットホストマシンの作成または管理を目的として構築されたすべてのPuppetプログラムは、マニフェストと呼ばれます。 Puppetで記述されたすべてのプログラムは、Puppetコーディングスタイルに従います。
Puppetの中核は、リソースの宣言方法と、これらのリソースが状態をどのように表しているかです。 どのマニフェストでも、ユーザーはクラスと定義を使用してグループ化されたさまざまな種類のリソースのコレクションを持つことができます。
場合によっては、Puppetマニフェストに目的の状態を達成するための条件ステートメントを含めることもできます。 ただし、最終的にはすべてのリソースが正しい方法で定義および使用され、カタログに変換された後に適用された定義済みマニフェストが設計されたタスクを実行できることを確認します。
マニフェストファイルのワークフロー
Puppetマニフェストは、次のコンポーネントで構成されています-
- ファイル(これらは、Puppetがそれらとは関係なく、単に拾い上げてターゲットの場所に配置するためのプレーンなファイルです)
- リソース
- テンプレート(これらは、ノード上で構成ファイルを構築するために使用できます)。
- Nodes (クライアントノードに関連するすべての定義はここで定義されます)
- クラス
注意点
- Puppetでは、すべてのマニフェストファイルはエンコード言語としてRubyを使用し、*。pp *拡張子で保存されます。
- 多くのマニフェストの「インポート」ステートメントは、Puppetの起動時にファイルをロードするために使用されます。 ディレクトリに含まれるすべてのファイルをインポートするには、import 'clients/ 'のような別の方法でimportステートメントを使用できます。 これにより、そのディレクトリ内のすべての .pp ファイルがインポートされます。
マニフェストの作成
変数の使用
マニフェストの作成中に、ユーザーは新しい変数を定義するか、マニフェストの任意の時点で既存の変数を使用できます。 Puppetはさまざまな種類の変数をサポートしていますが、文字列や文字列の配列など、頻繁に使用される変数はほとんどありません。 それらとは別に、他の形式もサポートされています。
文字列変数の例
$package = "vim"
package { $package:
ensure => "installed"
}
ループを使用する
ループは、定義された条件が満たされるまで、同じコードセットで複数の反復を実行する場合に使用されます。 また、異なる値のセットを使用して反復タスクを実行するためにも使用されます。 10種類のタスクを10個作成します。 1つのタスクを作成し、ループを使用して、インストールするさまざまなパッケージでタスクを繰り返すことができます。
最も一般的には、異なる値でテストを繰り返すために配列が使用されます。
$packages = ['vim', 'git', 'curl']
package { $packages:
ensure => "installed"
}
条件付きの使用
Puppetは、従来のプログラミング言語に見られる条件構造のほとんどをサポートしています。 条件を使用して、特定のタスクを実行するか、コードセットを実行するかを動的に定義できます。 if/elseおよびcaseステートメントと同様。 さらに、実行のような条件は、条件のように機能する属性もサポートしますが、コマンド出力のみを条件として受け入れます。
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!': }
}