ワークフロー
AWX と同じように、playbook、承認、ほかのワークフローをつなげる
フォーム作成者向け: ワークフローとは何か、そのノードがどのように実行されるか、次に読むべきページを説明します。
ワークフローはノードのグラフです。各ノードは何かを実行します。デザイナーの 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 ジョブのアーティファクトを引き渡します。
このセクションの内容
次のページでワークフローを詳しく説明しています。
| ページ | 内容 |
|---|---|
| ワークフローファイル | ファイルの構文、ノードの種類、各ノードの実行設定 |
| デザイナーでの編集 | デザイナーのワークフローセクション: グラフ、ノードとリンクのダイアログ、ドライラン |
| ワークフローの実行 | ワークフローを起動するフォーム、ジョブページ、ノードの出力、承認、中止 |