6.13. 追加変数
survey 変数を渡すと、Automation Controller 内の追加変数 (extra_vars
) として渡されます。ただし、(Survey の場合と同様に) 追加の変数をジョブテンプレートに渡すと、インベントリーおよびプロジェクトから渡される他の変数がオーバーライドされる可能性があります。
デフォルトでは、extra_vars
は !unsafe
とマークされます。ただし、ジョブテンプレートの Extra Variables でユーザーが指定したものは、そのようにマークされません。これらは、ジョブテンプレートを追加または編集する権限を持つユーザーのみが追加できるため、信頼できるものです。たとえば、ネストされた変数は、プロンプトとして入力されたときに展開されません。Jinja の括弧は文字列として扱われるためです。安全でない変数の詳細は、Unsafe or raw strings を参照してください。
ジョブ起動 API に渡される extra_vars
は、以下のいずれかが該当する場合のみ有効です。
- それらは有効な survey の変数に対応する。
-
ask_variables_on_launch
が True に設定されている。
例
debug = true
のインベントリーの変数が定義されています。この変数 debug = true
は、ジョブテンプレート Survey でオーバーライドされる可能性があります。
渡す変数がオーバーライドされないようにするには、Survey で変数を再定義して変数が含まれていることを確認します。インベントリー、グループ、ホストの各レベルで追加の変数を定義できます。
ALLOW_JINJA_IN_EXTRA_VARS
パラメーターを指定する場合は、自動化実行の設定 の ALLOW_JINJA_IN_EXTRA_VARS 変数 セクションを参照して設定してください。
ジョブテンプレートの追加変数ディクショナリーは Survey 変数にマージされます。
以下は、YAML および JSON 形式の extra_vars
の簡略化された例です。
- YAML 形式の設定:
launch_to_orbit: true satellites: - sputnik - explorer - satcom
- JSON 形式の設定:
{ "launch_to_orbit": true, "satellites": ["sputnik", "explorer", "satcom"] }
次の表は、Automation Controller での変数の順序に関する動作 (階層) を、Ansible と比較したものです。
Ansible | Automation Controller |
---|---|
ロールのデフォルト | ロールのデフォルト |
動的インベントリー変数 | 動的インベントリー変数 |
インベントリー変数 | Automation Controller インベントリー変数 |
インベントリーの | Automation Controller グループ変数 |
インベントリーの | Automation Controller ホスト変数 |
Playbook の |
Playbook の |
Playbook の |
Playbook の |
ホストのファクト | ホストのファクト |
登録された変数 | 登録された変数 |
ファクトの設定 | ファクトの設定 |
プレイ変数 | プレイ変数 |
プレイの | (サポート対象外) |
プレイの |
プレイの |
ロールと include 変数 | ロールと include 変数 |
ブロック変数 | ブロック変数 |
タスク変数 | タスク変数 |
追加変数 | ジョブテンプレートの追加変数 |
ジョブテンプレートの Survey (デフォルト) | |
ジョブ起動の追加変数 |
6.13.1. ジョブテンプレートの起動
ジョブを手動で再起動する代わりに、launch_type
を relaunch
に設定することで再起動を指定します。再起動の動作は、extra_vars
を継承しないという点で、起動の動作とは異なります。
ジョブの再起動は継承ロジックを使用しません。再起動されるジョブに対して計算されたものと同じ extra_vars
を使用します。
例
extra_vars
を指定せずにジョブテンプレートを起動すると、j1 というジョブが作成されます。次に、ジョブテンプレートを編集し、extra_vars
を追加します ("{ "hello": "world" }"
の追加など)。
j1 を再起動すると j2 が作成されますが、継承するロジックがなく、j1 には extra_vars
がないため、j2 には extra_vars が指定されません。
j1 の作成後に追加した extra_vars
を使用してジョブテンプレートを起動すると、作成された再起動ジョブ (j3) には extra_vars が含まれます。j3 を再起動すると、extra_vars
も含まれる j4 が作成されます。