はじめに
Ansible Tower と、そのアップストリーム版である AWX には、ワークフローという機能があります。 ワークフローは、ジョブテンプレート(Playbook + α のオブジェクト)を複数つなぎあわせて、一連の処理を組み上げる機能です。
ワークフローは以下のように、複数ジョブに分岐して、また一つのジョブに収束するする流れも作れます。
これまでは、収束前のジョブがいずれでも正常であれば次のジョブの進む、という仕様でした。 AWX 9.2.0 から、次のジョブに進む条件を選択(すべて/ANY)できるようになりました。
この記事では、設定方法をご紹介します。
- 動作確認環境
- AWX 10.0
- 言語: 日本語
(なお、Ansible Tower の現在の最新版 3.6.3 にはまだ実装されていないようです。これからに期待です。)
[2020/05/19 追記] Ansible Tower 3.7.0 で実装されたようです。
Release Notes — Ansible Tower Release Notes v3.7.0
Added the ability to configure the convergence behavior of workflow nodes with the implementation of the ALL node, which requires that every single parent meets the “run on” conditions before continuing
■ 設定する箇所
ワークフロービジュアライザーでジョブテンプレートを配置する際、以下のように「CONVERGENCE」という項目があります。
ここで、すべて
、ANY
を選択します。
すべて
: 収束前のジョブがすべて正常ならこのジョブを実行する(新たな選択肢)ANY
: 収束のジョブのいずれかが正常ならこのジョブを実行する(もともとはこちらで固定)
■ すべて
を選択した場合
CONVERGENCEで すべて
を選択すると、ジョブテンプレートのノードの上に「ALL」というマークが付きます。
続いて、このジョブテンプレートのノードに収束するように、成功時の線を結びつけます。
実際にしたときの画面です。収束前の一番下のジョブテンプレートのノード tower-sapmle-fatal
でエラーが発生したため、収束後のノード tower-sample-test
は実行されていません。
■ (参考)ANY
を選択した場合
今までの動作条件はこちらで固定です。参考までに載せておきます。
CONVERGENCEで ANY
を選択した場合は、特にマークは付きません。
実際にしたときの画面です。収束前の一番上のジョブテンプレートのノード tower-sapmle-fatal
がエラーですが、ANY
であるため、収束後のノード tower-sample-test
が実行されました。
左上のステータス通り、ワークフロージョブとしては「失敗」となりました。
■ おわりに
収束時の条件が選べるようになったことは、柔軟にワークフローを組めるようになって便利だと思いました。