Puppet-facter-facts
人形-事実と事実
Puppetは、環境変数として複数の値を保持することをサポートしています。 この機能は、 facter を使用してPuppetでサポートされています。 Puppetでは、ファクトは環境レベル変数を保持するスタンドアロンツールです。 Inは、BashまたはLinuxのenv変数に似ていると考えることができます。 ファクトに保存されている情報とマシンの環境変数が重複している場合があります。 Puppetでは、キーと値のペアは「ファクト」として知られています。 各リソースには独自のファクトがあり、Puppetでは、ユーザーは独自のカスタムファクトを構築するために活用できます。
- Facterコマンド*を使用して、すべての異なる環境変数とそれに関連する値をリストできます。 これらのファクトのコレクションには、すぐに使えるファクトが付属しており、コアファクトと呼ばれます。 コレクションにカスタムファクトを追加できます。
1つの変数のみを表示する場合。 次のコマンドを使用して実行できます。
ファクターがPuppetにとって重要である理由は、ファクターとファクトがPuppetコード全体で*「グローバル変数」*として利用可能であるためです。
テストする例
それをテストする
上記のコードスニペットでわかるように、 OperatingSystem を定義していません。 値を通常の変数としてソフトコード値 $ OperatingSystem に置き換えました。
Puppetでは、使用および定義できる事実には3つのタイプがあります-
- コアファクト
- カスタムファクト
- 外部の事実
コアファクトはトップレベルで定義され、コード内のすべてのポイントでアクセスできます。
人形の事実
エージェントがマスターにカタログを要求する直前に、エージェントはまず、キー値ペアの形式でそれ自体で利用可能な情報の完全なリストをコンパイルします。 エージェントに関する情報は、ファクターと呼ばれるツールによって収集され、各キーと値のペアはファクトと呼ばれます。 以下は、エージェントに関するファクトの一般的な出力です。
上記のコードでは、bashの「env」変数で使用可能な情報の一部とデータの一部が重複していることがわかります。 Puppetはデータを直接使用せず、代わりにファクターデータを使用します。Facterデータはグローバル変数として扱われます。
ファクトはトップレベル変数として利用可能になり、Puppetマスターはそれらを使用して、要求元エージェントのPuppetカタログをコンパイルできます。 係数は、$プレフィックス付きの通常の変数としてマニフェストで呼び出されます。
例
上記のマニフェストファイルは、 machineOperatingSystem.txt という単一のファイルについてのみ気にします。このファイルの内容は、 OperatingSystem という事実によって差し引かれます。
カスタムファクト
私たちが見た上記の事実はすべて、マシンの中核的な事実です。 次の方法でノードにこのカスタムファクトを追加できます-
- 「export FACTER…構文」を使用する
- $ LOAD_PATH設定を使用する
- ファクトライブラリ
- Pluginsync
「export FACTER」構文の使用
export FACTER _ \ {fact’s name}構文を使用して、ファクトを手動で追加できます。
例
$ LOAD_PATH設定の使用
Rubyでは、$ LOAD_PATHはBashの特殊パラメーターと同等です。 bash $ PATH変数に似ていますが、実際には$ LOAD_PATHは環境変数ではなく、事前定義された変数です。
$ LOAD_PATHには同義語「$:」があります。 この変数は、値を検索してロードする配列です。
ディレクトリファクタを作成し、*。pp *ファイルを追加し、それにコンテンツを追加する例を見てみましょう。
次のコンテンツをcustom_facts.rbファイルに追加します。
Facterは、$ LOAD_PATHにリストされているすべてのフォルダーをスキャンする方法で動作し、facterと呼ばれるディレクターを探します。 特定のフォルダーが見つかると、フォルダー構造内の任意の場所にロードされます。 このフォルダーを見つけると、そのファクターフォルダーでRubyファイルを探し、メモリ内の特定の構成に関するすべての定義済みファクトを読み込みます。
FACTERLIBを使用する
Puppetでは、FACTERLIBは$ LOAD_PATHと非常によく似ていますが、Rubyの特殊変数ではなく、OSレベルの環境パラメーターであるという重要な違いが1つあります。 デフォルトでは、環境変数は設定されていません。
FACTERLIBをテストするには、次の手順を実行する必要があります。
次の構造にtest_factsというフォルダーを作成します。
rbファイルに次の内容を追加します。.
exportステートメントを使用します。
新しいファクターをテストします。
外部の事実
ユーザーがプロビジョニング時に作成されたいくつかの新しいファクトを適用したい場合、外部ファクトは非常に役立ちます。 外部ファクトは、プロビジョニング段階でVMにメタデータを適用する重要な方法の1つです(例: vSphere、OpenStack、AWSなどを使用)
作成されたすべてのメタデータとその詳細をPuppetが使用して、カタログにどの詳細を適用するかを決定できます。
外部ファクトの作成
エージェントマシンで、以下に示すようにディレクトリを作成する必要があります。
ディレクトリに次の内容のシェルスクリプトを作成します。
スクリプトファイルの権限を変更します。
完了すると、キーと値のペアに存在する変数を見ることができます。
Puppetでカスタムファクトを作成できます。 参考として、Puppetサイトから次のリンクを使用してください。
https://docs.puppet.com/facter/latest/fact_overviewl#writing-structured-facts