はじめに
Ansible Tower / AWX のワークフローで、別のジョブテンプレートに変数を渡せる set_stats モジュールがあります。
set_stats に登録した変数は、かなり優先度が高く、追加変数(Extra Variables)を上書きするケースもあります。
この記事では一例を示します。
- 参考
Playbook
以下2つの Playbook を利用します。
test01.yml の set_stats で msg という変数を登録し、test02.yml で表示します。
test01.yml(ジョブテンプレートtask01で利用)
--- - hosts: localhost gather_facts: no tasks: - name: set_stats test set_stats: data: msg: "msg by set_stats"
task02.yml(ジョブテンプレートtask02で利用)
--- - hosts: localhost gather_facts: no tasks: - name: debug test debug: msg: "{{ msg }}"
ワークフローの構成
以下の構成にします。

この構成により msg 変数が3箇所で定義されます。
| 場所 | 値 |
|---|---|
ジョブテンプレート task01 の追加変数 |
overridden by test01!! |
Playbook task01.yml の set_stats |
msg by set_stats |
ジョブテンプレート task02 の追加変数 |
overridden by test02!! |
実行
ジョブテンプレート task02 で表示される msg の値は msg by set_stats になります。

ジョブテンプレートtask01 のログ
ジョブテンプレート task01 実行時のログは以下の通りです。

overridden by test01!! が、set_stats で登録した値は「アーティファクト」欄に表示されます。これが強いです。
ジョブテンプレートtask02 のログ
ジョブテンプレート task02 実行時のログは以下の通りです。

ジョブテンプレート設定としては、追加変数に overridden by test02!! を指定しましたが、test01 で set_stats した値 msg by set_stats になっています。
おわりに
いろいろな場所で変数が定義できるのは便利ですが、優先度には注意ですね。
ちなみに、(ジョブテンプレートではなく)ワークフロージョブテンプレートの追加変数で msg 変数を指定したら、set_stats より優先されました。