3.14. スマート変数ツールの使用
スマート変数は、スマートクラスパラメーターを含まない Puppet クラスで使用するために、Puppet マスターにグローバルパラメーターを提供するツールです。同じスマートな Matcher ルールは、スマート変数とスマートクラスパラメーターの両方に使用されます。
スマート変数ツールは、Puppetモジュールがスマートクラスパラメーターをサポートする前の暫定措置として導入されました。スマート変数を使用する特別な理由がない場合は、「スマートクラスパラメーターの設定」 で説明されているように、Red Hat は、代わりにスマートクラスパラメーターを使用することを推奨しています。
スマートクラスパラメーターが導入される前は、グローバルパラメーターを使用するようにPuppetコードを書き直すように求められたパラメーターをオーバーライドしたいユーザー。以下は例になります。
class example1 { file { '/tmp/foo': content => $global_var } }
上記の例では、$global_var
は Web UI の スマート変数セクションで設定され、値は "example1" クラスに関連付けられます。Puppetがグローバルスコープを検索するのを制限するために、グローバル変数の前に::
を付けることが推奨されますが、付けなくても、変数が非グローバル変数になるわけではありません。
スマートクラスパラメーターの導入により、以下の形式を使用できます。
class example2($var="default") { file { '/tmp/foo': content => $var } }
上記の例では、$var
は Web UI の Smart Class Parameters セクションで設定され、値は "example2" クラスに関連付けられます。上記の class example2($var="default")
のように、クラスヘッダーで定義された変数が表示された場合は、$var
がクラスパラメーターであることを確認できます。スマートクラスパラメーター関数を使用して、変数を上書きする必要があります。
示されているように、スマート変数には、Puppetコミュニティの標準モジュールではなく、global-namespace パラメーターを使用してカスタム設計されたモジュールが必要です。結果は同じです。上記の例では、テキストは '/tmp/foo' に置かれています。そのため、レガシーモジュールのサポート以外に、スマート変数を使用する理由がなくなりました。
スマート変数はグローバル変数ですが、Puppet クラスに関連付けられ、Satellite で特定の Puppet クラスが割り当てられたホストにのみ送信されます。任意の名前でスマート変数を作成できますが、検証は Satellite で行われませんが、関連する Puppet モジュールにコードに一致する変数がない場合は、スマート変数は使用されません。
Satellite は、Satellite で作成した変数をホスト YAML ファイルに追加します。このファイルは、Web UI で Hosts > All Hosts に移動して、ホスト名を選択してから YAML ボタンをクリックします。Satellite は、ホスト YAML ファイルを 外部ノードの分類子(ENC)(Puppet マスターに含まれる機能)に送信します。Puppet マスターがホストの ENC にクエリーを実行すると、ENC はホストの状態を記述する YAML ドキュメントを返します。この YAML ドキュメントは Puppet マニフェストから取得したデータに基づいていますが、スマートクラスパラメーターの上書きとスマート変数が適用されます。
スマート変数のホストへの適用
スマート変数は、グローバルパラメーターを含むように以前に変更されたカスタム Puppet モジュールをサポートするためにのみ使用する必要があるため、次の例では、anothermoduleと呼ばれる簡単な例を使用します。anothermodule Puppet マニフェストは以下のとおりです。
class anothermodule { file { '/tmp/motd': ensure => file, content => $::content_for_motd, } }
この例では、$::content_for_motd
パラメーターの値を指定します。
- Web UI で、Configure > Classes に移動します。
- 一覧から Puppet クラスの名前を選択します。
- スマート変数 タブをクリックします。これにより、新しい画面が表示されます。左側のセクションには、以前に作成したパラメーターの一覧(ある場合)が含まれます。右側のセクションには設定オプションが含まれます。
- Add Variable をクリックして、新しいパラメーターを追加します。
-
Key フィールドにパラメーターを入力します。この例では、
content_for_motd
です。 -
Description テキストボックス(例:
Testing /tmp motd Text
)を編集します。 - 渡すデータの パラメータータイプ を選択します。string を選択します。
-
パラメーターに デフォルト値 を入力します。たとえば、
No Unauthorized Use
はありません。 - オプションの入力バリデーター セクションを使用して、パラメーターに許可される値を制限します。バリデータータイプ (コンマ区切りの値の リスト または正規表現の regexp のいずれか) を選択し、バリデータールール フィールドに許可される値または正規表現コードを入力します。
- 属性の優先順位付け セクションを使用して、ホスト属性またはファクトが matcher に対して評価される優先順位を設定します (以下に設定)。リストでエントリーを再配置し、デフォルトのリストに追加できます。matcher 間で AND 論理条件を作成するには、matcher の名前をコンマ区切りのリストとして 1 行に配置します。
-
Matcher の指定 セクションで、Matcher の追加 をクリックして条件付き引数を追加します。一致する属性は、上記の 順位 リストのエントリーに対応している必要があります。matcher が設定されていない場合は、デフォルト値のみを使用できます。たとえば、完全修飾ドメイン名が
server1.example.com
のホストに対して、パラメータの値をThis is for Server1
とする場合、Matchをfqdn=server1.example.com
とし、ValueをThis is for Server1
とします。 - 送信 をクリックして変更を保存します。