ワークフロー

AWX と同じように、playbook、承認、ほかのワークフローをつなげる

  1. ワークフローの実行のしくみ
  2. ノード間でデータを渡す
  3. AWX ランナーで実行されるノードも、同じように AWX ジョブのアーティファクトを引き渡します。
  4. このセクションの内容

フォーム作成者向け: ワークフローとは何か、そのノードがどのように実行されるか、次に読むべきページを説明します。

ワークフローはノードのグラフです。各ノードは何かを実行します。デザイナーの playbook、別のワークフロー、承認、 またはリポジトリのプルです。ノード間のリンクは、成功時、失敗時、または常に、次に何を実行するかを示します。 workflow タイプ のフォームがワークフローを起動し、ジョブページでは実行中のワークフローがリアルタイムで描画されます。

ワークフローは AWX の構文と AWX のルールに従うため、AWX からエクスポートしたワークフローは AnsibleForms でも同じように読めます。ワークフローは AWX を使わずに RTE で実行されます。playbook ノードは、ノードのインベントリ、認証情報、制限、タグを持つ個別のジョブです。


ワークフローの実行のしくみ

ノードは AWX のルールに従って実行され、互いに依存しない分岐は並行して実行されます。

  • 親のないノードは、ワークフローの開始と同時に開始します。
  • リンクは、そのノードが終了したときに発火します: 成功時 のリンクは成功の後、 失敗時 のリンクは失敗の後、 常に のリンクはどちらの後にも発火します。キャンセルされたノードは、どのリンクも発火させません。
  • ノードは、そこに入るリンクのいずれか 1 つが発火するとすぐに開始します。 すべての親の収束が必要 をオンにすると、そこに入る すべてのリンクが発火するまで待ちます。
  • 開始できなくなったノードは 実行しない としてマークされ、そのノードからしか開始できないノードも同様にマークされます。
  • ノードが失敗し、それを処理するものがない場合、ワークフローは失敗します: そのノードに 失敗時 のリンクも 常に のリンクもない場合です。 リンクで処理される失敗では、ワークフローは失敗しません。

条件 ( if_extra_var ) が満たされないノードはスキップされます。その後に続くものは、成功の後と同じように実行されます。承認 ノードは条件を取りません。常に応答を待ちます。


ノード間でデータを渡す

ノードの playbook が set_stats で収集したものは、AWX がジョブのアーティファクトを引き渡すのと同じように、後続のノードに extra vars として 届きます。ノードは、そこへのリンクが発火したすべての親からデータを受け取り、親が記述された順にマージします。そして、受け取ったものに 自身のジョブのデータを加えて引き渡します。両方が同じキーを設定した場合は、自身のデータが優先されます。

# build.yaml, the first node : its version and build id go to the nodes after it
- name: Build
  hosts: localhost
  gather_facts: false
  tasks:
    - name: Pass the build on
      ansible.builtin.set_stats:
        data:
          version: "2.4.1"
          build_id: 42

後続のノードは、ほかの extra var と同じように {{ version }} と {{ build_id }} を読み取れます。

ノードの extra vars は 4 か所から来ます。そのうちの 1 つ extra_data はノード自身の変数です。これは AWX での呼び名で、 ワークフローファイル でノードに設定します。2 つのソースが同じキーを設定した場合、優先順位は AWX と同じで、低いものから順に次のとおりです。

ソース 優先される対象
ノード自身の変数 ( extra_data ) なし
set_stats で引き渡されたデータ ノードの extra_data
ワークフローの extra_vars 引き渡されたデータ
フォームの値 すべて
  • 引き渡されるのは playbook 全体のデータだけです。つまり per_host: false (既定値) の set_stats です。
  • 承認ノード、スキップされたノード、プロジェクトノードは、受け取ったものをそのまま引き渡します。
  • ノードの出力の最後には、引き渡したキーが名前だけで表示されます。値はシークレットの可能性があるためです。
  • ノードのジョブはそのデータをアーティファクトとして保持し (そのページの Artifacts を表示 )、ワークフロージョブはすべての ノードのデータを保持します。そのため、ネストしたワークフローも、後続のノードにデータを引き渡します。
  • AWX ランナーで実行されるノードも、同じように AWX ジョブのアーティファクトを引き渡します。

このセクションの内容

次のページでワークフローを詳しく説明しています。

ページ 内容
ワークフローファイル ファイルの構文、ノードの種類、各ノードの実行設定
デザイナーでの編集 デザイナーのワークフローセクション: グラフ、ノードとリンクのダイアログ、ドライラン
ワークフローの実行 ワークフローを起動するフォーム、ジョブページ、ノードの出力、承認、中止