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 パラメーターの値を指定します。

  1. Web UI で、Configure > Classes に移動します。
  2. 一覧から Puppet クラスの名前を選択します。
  3. スマート変数 タブをクリックします。これにより、新しい画面が表示されます。左側のセクションには、以前に作成したパラメーターの一覧(ある場合)が含まれます。右側のセクションには設定オプションが含まれます。
  4. Add Variable をクリックして、新しいパラメーターを追加します。
  5. Key フィールドにパラメーターを入力します。この例では、content_for_motd です。
  6. Description テキストボックス(例: Testing /tmp motd Text)を編集します。
  7. 渡すデータの パラメータータイプ を選択します。string を選択します。
  8. パラメーターに デフォルト値 を入力します。たとえば、No Unauthorized Use はありません。
  9. オプションの入力バリデーター セクションを使用して、パラメーターに許可される値を制限します。バリデータータイプ (コンマ区切りの値の リスト または正規表現の regexp のいずれか) を選択し、バリデータールール フィールドに許可される値または正規表現コードを入力します。
  10. 属性の優先順位付け セクションを使用して、ホスト属性またはファクトが matcher に対して評価される優先順位を設定します (以下に設定)。リストでエントリーを再配置し、デフォルトのリストに追加できます。matcher 間で AND 論理条件を作成するには、matcher の名前をコンマ区切りのリストとして 1 行に配置します。
  11. Matcher の指定 セクションで、Matcher の追加 をクリックして条件付き引数を追加します。一致する属性は、上記の 順位 リストのエントリーに対応している必要があります。matcher が設定されていない場合は、デフォルト値のみを使用できます。たとえば、完全修飾ドメイン名がserver1.example.comのホストに対して、パラメータの値をThis is for Server1とする場合、Matchfqdn=server1.example.comとし、ValueThis is for Server1とします。
  12. 送信 をクリックして変更を保存します。