はじめに
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
より優先されました。