ワークフローの実行
フォームからワークフローを起動し、ジョブページで追跡する
フォーム
workflow タイプ のフォームはワークフローを起動します。ワークフローは playbook と同じように workflow: で指定します。 ワークフローフォルダー内の ファイル をサブフォルダーを含めて指定する ( team/deploy-app.yml ) か、ファイル内のワークフローの 名前 ( deploy-app ) で指定します。
- name: Deploy the app
type: workflow
workflow: team/deploy-app.yml
roles:
- admin
fields:
- name: app_name
type: text
default: orders-api
マルチステップフォームの値がステップに届くのと同じように、フォームのフィールドは extra vars としてすべてのノードに届きます。フォームの credentials も、 フォームで付けた名前ですべてのノードに届きます。
- name: Provision NAS storage
type: workflow
workflow: nas.yml
credentials:
ontap: ontap_automation # every node's playbook gets `ontap`
ワークフローファイルで設定したノード自身の認証情報は、独自の名前で playbook に届き、名前が重なった場合はこちらが優先されます。フォームのデザイナーのビジュアルタブでは、 ワークフロー に デザイナーのワークフローファイルが一覧表示されます。
ファイル名だけを指定した場合も、そのファイル名を持つファイルが 1 つだけであれば、サブフォルダー内で見つかります。同じ名前のワークフローが 2 つあると、 名前で指定しているフォームは停止し、2 つ目を保存するときにデザイナーが警告します。どちらかの名前を変更するか、ファイルで指定してください。 ワークフローが見つからない場合、ジョブは失敗で終了し、その理由が出力に表示されます。
ジョブ
ワークフロージョブは AnsibleForms のサーバー上で実行され、playbook の各ノードは、マルチステップフォームのステップと同じように、ワークフロージョブの子である 個別のジョブとして実行されます。RTE 上のデザイナーの playbook、または runner: のあるノードの場合は、AWX、AAP、Ascender、Semaphore、Rundeck、Jenkins 上の そのランナーのテンプレートまたはジョブです ( ノードの実行場所 を参照)。
ジョブのページには、ワークフローがリアルタイムで描画されます。各ノードはステータスで色分けされ、発火したリンクと、実行されない ノードが表示されます。上部の情報には、playbook の代わりにワークフローの名前が表示されます。
- 終了した ノードをクリック すると、その出力がダイアログで開きます。
- 出力 には、すべてのノードの出力が、ノードが終了した順に
WORKFLOW NODE [identifier] (status)の見出しの下に 表示されます。 - 出力内の各ノードのヘッダーと、グラフから開いたダイアログにある Extravars を表示 と Artifacts を表示 で、 そのノード自身の extravars とアーティファクト (ない場合は
{}) を JSON または YAML で、コピーボタン付きで表示します。
ノードの extravars には、それより前のノードが引き渡したものが入っており、アーティファクトには、その playbook が set_stats で収集したものが入っています。2 つのボタンは ロールオプション の showExtravars と showArtifacts に従います。同じデータは、ジョブを見られるユーザーであれば GET /api/v2/job/{id}/node/{nodeId} からも取得できます。
AWX のルールに従い、ノードが失敗し、それを処理するものがなかった場合、ジョブは失敗します。それ以外の場合は成功します。
承認
承認ノードは、誰かが応答するまでワークフロージョブを止めておきます。
ワークフローが承認ノードに到達すると、ジョブのステータスは 承認待ち になります。フォームの 承認ポイント と同じように、 ベルとジョブのページに表示されます。ノードの名前が承認のタイトルに、説明が メッセージになります。それ以外はフォームの approval から取得します。
rolesで、誰が承認または却下できるかを決め、allowSelfで、起動したユーザーも承認できるかを決めます。notificationsとchannelsに依頼が送信されます。
approval のないワークフローフォームでも承認ノードでジョブは止まりますが、その場合は管理者しか承認できません。
- 承認された 場合、ノードは成功し、ワークフローは 成功時 のリンクに沿って続行します。
- 却下された 場合、ノードは失敗し、ワークフローは 失敗時 のリンクに沿って続行します。
- タイムアウトした 場合 (応答がないままノードのタイムアウトが過ぎた場合)、ノードはやはり失敗します。
中止
実行中のワークフロージョブで 中止 を使うと、ワークフローが停止します。実行中のノードのジョブは中止され、それ以降は何も開始されず、 待機中の承認はキャンセルされます。承認を待っているワークフロージョブも中止できます。