ワークフローの実行

フォームからワークフローを起動し、ジョブページで追跡する

  1. フォーム
  2. ジョブ
  3. 承認
  4. 中止

フォーム

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 のないワークフローフォームでも承認ノードでジョブは止まりますが、その場合は管理者しか承認できません。

  • 承認された 場合、ノードは成功し、ワークフローは 成功時 のリンクに沿って続行します。
  • 却下された 場合、ノードは失敗し、ワークフローは 失敗時 のリンクに沿って続行します。
  • タイムアウトした 場合 (応答がないままノードのタイムアウトが過ぎた場合)、ノードはやはり失敗します。

中止

実行中のワークフロージョブで 中止 を使うと、ワークフローが停止します。実行中のノードのジョブは中止され、それ以降は何も開始されず、 待機中の承認はキャンセルされます。承認を待っているワークフロージョブも中止できます。