6.18. 追加変数
Survey および API 経由など、複数の方法で Automation Controller のジョブテンプレートに追加の変数を渡すことができます。
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
launch_to_orbit: true
satellites:
- sputnik
- explorer
- satcom
- JSON 形式の設定:
{
"launch_to_orbit": true,
"satellites": ["sputnik", "explorer", "satcom"]
}
{
"launch_to_orbit": true,
"satellites": ["sputnik", "explorer", "satcom"]
}
次の表は、Automation Controller での変数の順序に関する動作 (階層) を、Ansible と比較したものです。
Automation Controller の変数階層階層(最後にリストされた優先)
| Ansible | Automation Controller |
|---|---|
| ロールのデフォルト | ロールのデフォルト |
| 動的インベントリー変数 | 動的インベントリー変数 |
| インベントリー変数 | Automation Controller インベントリー変数 |
|
インベントリーの | Automation Controller グループ変数 |
|
インベントリーの | Automation Controller ホスト変数 |
|
Playbook の |
Playbook の |
|
Playbook の |
Playbook の |
| ホストのファクト | ホストのファクト |
| 登録された変数 | 登録された変数 |
| ファクトの設定 | ファクトの設定 |
| プレイ変数 | プレイ変数 |
|
プレイの | (サポート対象外) |
|
プレイの |
プレイの |
| ロールと include 変数 | ロールと include 変数 |
| ブロック変数 | ブロック変数 |
| タスク変数 | タスク変数 |
| 追加変数 | ジョブテンプレートの追加変数 |
| ジョブテンプレートの Survey (デフォルト) | |
| ジョブ起動の追加変数 |
6.18.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 が作成されます。