workflow job template (ワークフロージョブテンプレート) は、単一ユニットとして、リリースプロセスの一部となっていたジョブの完全なセットを追跡するタスクを実行する一連の個別ジョブテンプレートをリンクします。
このメニューでは、現在利用可能なワークフローおよびジョブテンプレートの一覧が表示されます。テンプレートの一覧は 名前 または 説明 で並び替え、検索できます。ジョブテンプレート タブを使用して、ユーザーはワークフローまたはジョブテンプレートを起動し、スケジュールし、変更し、削除することもできます。
新規ワークフロージョブテンプレートを作成するには、以下を実行します。
追加変数:
追加のコマンドライン変数を Playbook に渡します。これは、Ansible ドキュメントの Passing Variables on the Command Line に記載されている ansible-playbook の「-e」または「–extra-vars」コマンドラインパラメーターです。
YAML または JSON のいずれかを使用してキー/値のペアを指定します。これらの変数には、順序を示す最大値があり、他の場所で指定された他の変数を上書きします。値の例には、以下が含まれます。
git_branch: production release_version: 1.5追加変数についての詳細は、追加変数 を参照してください。
テンプレートを保存してもワークフローテンプレートのページから移動せず、追加の編集ができるように Job Template Details (ワークフローテンプレートの詳細) ビューに留まります。保存したテンプレートの「詳細」タブからはパーミッション、通知、Survey の確認、編集、および追加を実行し、エディターを使用してワークフロージョブテンプレートをビルドできます。
新規に作成されたワークフロージョブテンプレートが画面下部のテンプレートの一覧の表示される際に、テンプレートが保存されていることを確認できます。
パーミッション をクリックすると、ユーザーおよびチームメンバーに関連付けられたパーミッションの確認、付与、編集および削除を実行できます。
ボタンをクリックし、このワークフロージョブテンプレートの新規のパーミッションを作成します。
この例では、2 ユーザーと 1 チームが選択されており、それぞれにこのワークフローテンプレートのパーミッションが付与されています。
チームとユーザー間を切り換える必要はなく、パーミッションを同時にどちらにも割り当てることができることに注意してください。
「実行」または「チェック」のジョブタイプを含むワークフローにより、ワークフローテンプレートの作成または編集画面で Survey 設定できます。Survey は、「Prompt for Extra Variables (追加変数のプロンプト)」の場合と同様に Playbook の追加変数を設定しますが、ユーザーにとって使いやすい質問と回答を使って実行します。また Survey はユーザー入力の確認を可能にします。 ボタンをクリックして Survey を作成します。
Survey のユースケースは多岐に及びます。一例として、開発者に「push to stage」ボタンを付与する操作が必要な場合、これは Ansible の高度な知識がなくても実行できます。起動時に、このタスクは「What tag should we release?」などといった質問への回答を求めるプロンプトを出す可能性があります。
多項選択式の質問を含む、多くのタイプの質問を尋ねるようにすることができます。
注釈
Survey は Enterprise レベルのライセンスを持つユーザーのみが利用できます。
Survey を作成するには、以下を実行します。
画面上部にある ON/OFF トグルボタンを使用すると、この survey プロンプトをすぐに有効化または無効化できます。
定型化されたバージョンの Survey が「プレビュー」ペインに表示されます。いずれの質問についても、編集 ボタンをクリックして質問を編集できます。削除 ボタンをクリックすると質問を削除でき、グリッドアイコンをクリックおよびドラッグして質問の順序を変更できます。
Survey の質問に対する 必須 の設定は、対話するユーザーにとって回答がオプションかどうかを決定します。
背後では、オプションの Survey 変数は入力されていない場合でも Playbook の ``extra_vars``に渡されることがあります。
extra_var
は Playbook に渡されません。length > 0``が設定されている場合、Survey の``extra_var
は Playbook に渡されません。length === 0``が設定されている場合、Survey の``extra_var
は、値が空のストリング ( “” ) に設定された状態で Playbook に渡されます。Ansible Tower 3.1 よりワークフローエディターは、ジョブテンプレート、プロジェクトの同期、およびインベントリーの同期をリンクするグラフィカルな方法を提供し、ここからワークフロージョブテンプレートを作成できます。
ジョブ、プロジェクトの同期、またはインベントリーの同期を行うために、以下のテンプレートの 2 つの組み合わせを使用します。
各ワークフローノードに関連付けられるテンプレートは、プロセスの進行時に成否に基づいて実行されます。
- On Success (成功時): 正常に完了すると、次のテンプレートを実行します。
- On Failure (失敗時): 失敗時に、別のテンプレートを実行します。
- Always (常時): 成功または失敗にかかわらず、実行を継続します。
テンプレートの上にカーソルを置くと、選択したテンプレートの削除 、または別のテンプレートの追加 を実行できます。
注釈
任意の数の組み合わされたジョブテンプレートまたはジョブ/インベントリーの同期でワークフロージョブテンプレートを作成する場合、それらのいずれかはリソースのインベントリーから削除され (リソースは存在しなくなります)、影響を受けるワークフロージョブテンプレートのワークフローエディターに戻ると、未完了のノードとして見つからないリソースが表示されます。
未完了のノードを修正するために、これを新規ジョブテンプレートで更新するか、またはこれをワークフローから削除します。
別のノードをノード間に挿入し、図をドラッグして分割したシナリオを示します。
最後に挿入したノードのやり直しを実行する必要がある場合、右側のペインが開いたら 取り消し をクリックするか、右側のペインから選択せずに別のノードをクリックします。
ノードを編集する必要がある場合、編集するノードをクリックすると右側のペインには現在の選択が表示されます。変更を加たら 選択 をクリックしてそれらをグラフィカルビューに適用します。
以下は、ジョブテンプレートで開始される 3 つのタイプのジョブがすべて含まれるワークフローの例です。これが実行に失敗する場合は、プロジェクト同期ジョブに進み、成否にかかわらず、インベントリーの同期ジョブに進みます。
ウィンドウの先頭にあるキーを使用して、グラフィックな説明と関連付けられる記号および色の意味を特定します。
兄弟ノードを作成するなど、同じ親ノードから複数のノードを追加できます。
注釈
異なるエッジタイプを持つ兄弟ステップのセットが設定されたワークフローで、それらの兄弟ステップの 1 つには割り当てられた追加のステップがあり、ワークフローからステップが削除されます。
追加ステップは兄弟ステップのセットに自動的に加わります。兄弟に複数のエッジタイプが使用されている場合は、エッジの競合が発生します。
この競合を解決してからワークフロージョブテンプレートを保存することができます。競合を解決するには、すべての兄弟ステップに同じエッジタイプを持たせます。
設定アイコン () をクリックしてビューのズーム、パニング、または再配置を行います。ワークフロー図をドラッグしてそれを画面上に再配置します。
重要
このペインで 閉じる をクリックすると作業は保存されません。代わりにワークフローエディター全体を閉じて最初からやり直す必要があります。
ワークフロージョブテンプレートを起動するには、以下を実行します。
ジョブテンプレートおよび Survey に設定される追加変数と共に、Tower は起動時にジョブテンプレートに追加される変数として同じ変数を自動的に追加します。さらに、Tower は web ブラウザーをこのジョブのジョブの詳細ページにリダイレクトし、進捗と結果が表示されます。
ジョブテンプレートの起動は、 ボタンを使用してスケジュールすることもできます。このボタンをクリックすると、スケジュールページが開きます。
このページには、選択されたワークフロージョブテンプレートで現在利用できるスケジュールの一覧が表示されます。スケジュールの一覧は、以下のいずれかによって並び替え、検索できます。
スケジュール 画面の右上にあるボタンから以下のアクションを実行できます。
新規スケジュールを作成するには、以下を実行します。
注釈
ジョブは UTC でスケジュールされます。ジョブが 1 日の特定の時間に繰り返し実行される場合には、夏時間 (DST) へ/からの切り替えがあると、ローカルタイムゾーンに合わせてこれらのジョブのスケジュールは移動します。
以下のスケジュールの説明には、スケジュールの具体的な内容と選択されたローカルタイムゾーンのスケジュール済みのオカレンスの一覧が表示されます。
スケジュールが保存されると、関連付けられたワークフロージョブテンプレートについてのスケジュールの一覧が表示されます。
ON/OFF トグルボタンを使用すると、このスケジュールをすぐに有効化または無効化できます。
アクション列には、スケジュールで利用できるいくつかのアクションがあります。
Ansible Tower では、ワークフロージョブテンプレートのコピー機能を使用できます。ワークフロージョブテンプレートをコピーすることを選択した場合、関連付けられたスケジュール、通知、またはパーミッションのコピーは 実行されません。スケジュールおよび通知は、ワークフロージョブテンプレートのコピーを作成するユーザーまたは管理者によって再度成される必要があります。ジョブテンプレートをコピーするユーザーには管理者権限が付与されますが、パーミッションはワークフロージョブテンプレートには割り当てられません (コピーされません)。
新規テンプレートが、コピーしたテンプレートの名前とタイムスタンプが設定された状態で開きます。
名前フィールドの内容を新規の名前に置き換え、他のフィールドのエントリーを指定または変更してこのページを完了します。
注釈
追加の厳密な extra_vars
検証が Ansible Tower 3.0.0 で追加されました。ジョブ起動 API に渡される``extra_vars`` は、以下が True の場合のみ受け入れられます。
ask_variables_on_launch
は True に設定されている。Survey 変数を渡す際に、それらは Tower 内の追加変数 (extra_vars
) として渡されます。これは、(Survey で実行するように) 追加変数をワークフローテンプレートに渡すと、インベントリーおよびプロジェクトから渡される他の変数が上書きされる可能性があるために注意が必要です。
たとえば、インベントリーの定義された変数が debug = true
であるとします。この変数 debug = true
はワークフローテンプレート Survey で上書きされる可能性があります。
渡す必要のある変数が上書きされないようにするには、それらを Survey で再定義することで組み込むことができます。追加変数はインベントリー、グループおよびホストのレベルで定義できることに注意してください。
以下の表では、Ansible の変数の順序との比較で、Ansible Tower の変数の順序の動作 (階層) を示しています。
Ansible Tower 変数の順序の階層 (最後に一覧表示された win)