Documentation

16. ワークフロージョブテンプレート

workflow job template (ワークフロージョブテンプレート) は、一連の各種ジョブテンプレートをリンクして、リリースプロセスに含まれていたジョブ全体を追跡するタスクを 1 つのユニットとして実行します。

(jt-icon) メニューは、現在利用可能なジョブテンプレートやワークフローのリストを表示します。ワークフロー/ジョブテンプレートのリストは、アルファベット順に名前別でソートされていますが、ワークフロー/ジョブテンプレートの各種フィールドや属性別に検索できます。ワークフロー/ジョブテンプレートのリストを使用して、ジョブテンプレートの起動、コピー、削除も可能です。

Wf templates - home with example wf template

16.1. ワークフローテンプレートの作成

新規ワークフロージョブテンプレートを作成するには、以下を実行します。

  1. オプションテンプレートの追加 add options template ボタンをクリックしてから、メニュー一覧より ワークフロージョブテンプレート を選択します。

Wf templates - create new wf template

  1. 以下のフィールドに該当する詳細を入力します。

  • 名前: ワークフローテンプレートの名前を入力します。

  • 説明: 任意の説明を入力します (オプション)。

  • 組織: ワークフローを関連付ける組織を入力するか、これを検索します。

  • ラベル: 「dev」または「test」などのこのワークフローテンプレートを説明するオプションのラベルを指定します。ラベルを使用して Tower ディスプレイにあるワークフローテンプレートおよび完了したジョブの分類およびフィルターを実行します。

    • ラベルは、ワークフローテンプレートに追加される際に作成されます。ラベルは、ワークフローテンプレートで提供されるプロジェクトを使用する単一の組織に割り当てられます。組織のメンバーは、(管理者ロールなどの) 編集パーミッションがある場合はワークフローテンプレートでラベルを作成できます。

    • ワークフローテンプレートが保存されると、ラベルはテンプレートの概要に表示されます。

    • ラベルの横にある「x」をクリックしてこれを削除します。ラベルが削除され、ワークフローまたはワークフローテンプレートの関連付けが解除されると、ラベルは組織ラベルの一覧から完全に削除されます。

    • ジョブは起動時にワークフローテンプレートからラベルを継承します。ラベルがワークフローテンプレートから削除される場合、ジョブからも削除されます。

_images/job-template-create-labels.png _images/job-template-saved-labels.png
  • 追加変数:

    • 追加のコマンドライン変数を Playbook に渡します。これは、Ansible ドキュメントの「 Passing Variables on the Command Line 」に記載されている ansible-playbook の「-e」または「--extra-vars」コマンドラインパラメーターです。

    • YAML または JSON のいずれかを使用してキー/値のペアを指定します。これらの変数には、順序を示す最大値があり、他の場所で指定された他の変数を上書きします。値の例には、以下が含まれます。

      git_branch: production
      release_version: 1.5
      

    追加変数についての詳細は、追加変数 を参照してください。

  1. ワークフロージョブテンプレートの設定が完了したら、保存 を選択します。

テンプレートを保存してもワークフローテンプレートのページから移動せず、追加の編集ができるように Job Template Details (ワークフローテンプレートの詳細) ビューに留まります。保存したテンプレートの「詳細」タブからはパーミッション、通知、Survey の確認、編集、および追加を実行し、エディターを使用してワークフロージョブテンプレートをビルドできます。

_images/wf-templates-wf-template-saved.png

新規に作成されたワークフロージョブテンプレートが画面下部のテンプレートの一覧の表示される際に、テンプレートが保存されていることを確認できます。

Wf templates - newly added wf template

16.2. パーミッションの使用

パーミッション をクリックすると、ユーザーおよびチームメンバーに関連付けられたパーミッションの確認、付与、編集および削除を実行できます。

_images/wf-template-completed-permissions-view.png

add ボタンをクリックし、このワークフロージョブテンプレートの新規のパーミッションを作成します。

この例では、2 ユーザーと 1 チームが選択されており、それぞれにこのワークフローテンプレートのパーミッションが付与されています。

_images/wf-template-assign-permissions-view.png

チームとユーザー間を切り換える必要はなく、パーミッションを同時にどちらにも割り当てることができることに注意してください。

16.3. 通知の使用

通知 をクリックすると、設定した通知の統合を簡単に確認できます。

通知 (組織を表示している場合は Users の横) をクリックすると、対象組織の通知を簡単に管理できます。通知が設定されていない場合には、グレーのボックスの上または、中から 通知 リンクをクリックして新規通知を追加または作成します。

詳細は、通知 を参照してください。

_images/wf-template-completed-notifications-view.png

16.4. スケジュールの使用

スケジュール をクリックすると、このテンプレートに設定されているスケジュールを確認できます。

Workflow Template - schedule

このビューから、編集するスケジュールの選択、スケジュールのオン/オフ、削除するスケジュールの複数選択などが可能です。

この画面には、選択された プロジェクト で現在利用できるスケジュールの一覧が表示されます。スケジュールの一覧は、名前 で並べ替えできます。

スケジュールの一覧には以下が含まれます。

  • 名前: スケジュール名をクリックすると、スケジュールの編集 ダイアログが開きます。

  • 初回実行日時: このタスクの最初にスケジュールされる実行

  • 次回実行日時: このタスクの次回にスケジュールされる実行

  • 最終実行日時: タスクに終了日時が設定されている場合、これはタスクの最後にスケジュールされている実行になります。

  • 最終変更時: スケジュールが最後に変更された時間

16.4.1. ワークフロージョブテンプレートのスケジュール

新規スケジュールを作成するには、以下を実行します。

  1. スケジュール画面で、add ボタンをクリックします。

  2. 以下のフィールドに該当する詳細を入力します。

  • 名前

  • 開始日

  • 開始時間

  • ローカルタイムゾーン: 入力した開始時間はこのタイムゾーンの時間になります。

  • 繰り返しの頻度: 更新頻度の変更に合わせて適切なオプションが表示されます。

注釈

ジョブは UTC でスケジュールされます。ジョブが 1 日の特定の時間に繰り返し実行される場合には、夏時間 (DST) へ/からの切り替えがあると、ローカルタイムゾーンに合わせてこれらのジョブのスケジュールは移動します。

以下のスケジュールの説明には、スケジュールの具体的な内容と選択されたローカルタイムゾーンのスケジュール済みのオカレンスの一覧が表示されます。

Workflow Template - schedule add

  1. スケジュールの詳細が正しければ、保存 をクリックします。

スケジュールが保存されると、関連付けられたワークフロージョブテンプレートについてのスケジュールの一覧が表示されます。

Workflow Template - schedule

ON/OFF の切り替えボタンを使用すると、このスケジュールをすぐに有効化または無効化できます。

16.5. Survey

「実行」または「チェック」のジョブタイプを含むワークフローにより、ワークフローテンプレートの作成または編集画面で Survey 設定できます。Survey は、「Prompt for Extra Variables (追加変数のプロンプト)」の場合と同様に Playbook の追加変数を設定しますが、ユーザーにとって使いやすい質問と回答を使って実行します。また Survey はユーザー入力の確認を可能にします。survey ボタンをクリックして Survey を作成します。

Survey のユースケースは多岐に及びます。一例として、開発者に「push to stage」ボタンを付与する操作が必要な場合、これは Ansible の高度な知識がなくても実行できます。起動時に、このタスクは「What tag should we release?」などといった質問への回答を求めるプロンプトを出す可能性があります。

多項選択式の質問を含む、多くのタイプの質問を尋ねるようにすることができます。

注釈

Survey は Enterprise レベルのライセンスを持つユーザーのみが利用できます。

16.5.1. Survey の作成

Survey を作成するには、以下を実行します。

  1. survey ボタンをクリックして、Survey の追加 ウィンドウを起動します。

Workflow Job Template - create survey

画面上部にある ON/OFF 切り替えボタンを使用すると、この survey プロンプトをすぐに有効化または無効化できます。

  1. Survey には複数の質問を含めることができます。それぞれの質問について、以下の情報を入力します。

  • 名前: ユーザーに尋ねる質問

  • 説明: (オプション) ユーザーに尋ねられる内容の説明。

  • Answer Variable Name (回答の変数名): ユーザーの応答の保存に使用する Ansible 変数名。これは Playbook で使用される変数です。変数名にはスペースを含めることができません。

  • 回答タイプ: 以下の質問のタイプから選択します。

    • テキスト: 単一行のテキスト。この回答の最小および最大の長さ (文字数) を設定できます。

    • Textarea (テキスト領域): 複数行のテキストフィールド。この回答の最小および最大の長さ (文字数) を設定できます。

    • パスワード: 応答は、実際のパスワードが処理される場合と同様に機密情報として処理されます。この回答の最小および最大の長さ (文字数) を設定できます。

    • Multiple Choice (single select) (複数の選択 (単一選択)): 1 度に 1 つのみを選択できるオプションの一覧。複数の選択オプション ボックスに 1 行に 1 つのオプションを入力します。

    • Multiple Choice (multiple select)(複数の選択 (複数選択)): 1 度に任意の数のオプションを選択できるオプションの一覧。複数の選択オプション ボックスに 1 行に 1 つのオプションを入力します。

    • Integer (整数): 整数。この回答の最小および最大の長さ (文字数) を設定できます。

    • Float (浮動): 10 進数。この回答の最小および最大の長さ (文字数) を設定できます。

  • Default Answer (デフォルトの回答): 質問に対するデフォルトの回答。この値はインターフェースに事前投入されており、ユーザーにより回答が指定されない場合に使用します。

  • 必須: この質問に対する回答がユーザーから求められているかどうかを示します。

  1. 質問の情報を入力したら、add ボタンをクリックして質問を追加します。

定型化されたバージョンの Survey が「プレビュー」ペインに表示されます。いずれの質問についても、編集 ボタンをクリックして質問を編集できます。削除 ボタンをクリックすると質問を削除でき、グリッドアイコンをクリックおよびドラッグして質問の順序を変更できます。

  1. 左ペインに戻り、質問を追加します。

  2. 完了したら、保存 をクリックして Survey を保存します。

Workflow-template-completed-survey

16.5.2. オプションの Survey の質問

Survey の質問に対する 必須 の設定は、対話するユーザーにとって回答がオプションかどうかを決定します。

背後では、オプションの Survey 変数は入力されていない場合でも Playbook の extra_vars に渡されることがあります。

  • テキスト以外の変数 (入力タイプ) がオプションとマークされ、入力されていない場合、Survey の extra_var は Playbook に渡されません。

  • テキスト入力またはテキスト領域の入力がオプションとしてマークされ、入力されていない場合で、最小の length > 0 が設定されている場合、Survey の extra_var は Playbook に渡されません。

  • テキスト入力またはテキスト領域の入力がオプションとしてマークされ、入力されていない場合で、最小の length === 0 が設定されている場合、Survey の extra_var は、値が空のストリング ( “” ) に設定された状態で Playbook に渡されます。

16.6. ワークフロービジュアライザー

Ansible Tower 3.1 よりワークフロービジュアライザーは、ジョブテンプレート、プロジェクトの同期、およびインベントリーの同期をリンクするグラフィカルな方法を提供し、ここからワークフロージョブテンプレートを作成できます。

16.6.1. ワークフローの構築

ワークフローを構築するために、ジョブ、プロジェクトの同期、またはインベントリーの同期のテンプレートの中の 2 つの組み合わせを使用します。

  1. ワークフロージョブテンプレートの詳細/編集ビューで workflow editor ボタンをクリックし、ワークフロービジュアライザーを起動します。

_images/wf-editor-create-new.png
  1. start ボタンをクリックし、テンプレートの一覧を表示してワークフローに追加します。

_images/wf-editor-create-new-add-template-list.png
  1. 右側のペインで、テンプレートの一覧から追加するテンプレートを選択します。ジョブ、プロジェクトの同期およびインベントリーの同期の間で切り換えるには、上記の該当するボタンをクリックします。追加されるそれぞれのテンプレートはノードを表します。

注釈

ワークフローグラフの設定時には、デフォルトのインベントリーまたは認証情報を持たないジョブテンプレートを選択することができません。ジョブテンプレートには認証情報は必要ありませんが、パスワードを必要とする認証情報がある場合には、この認証情報がプロンプトを使用する認証情報に置き換えられない限り、使用中のワークフローに対してジョブテンプレートを選択することはできません。

  1. テンプレートが選択されると、ワークフローはビルドを開始し、プロンプトが表示されて選択されたテンプレートに対して実行する必要のあるアクションのタイプを要求します。

_images/wf-editor-create-new-add-template-type.png
  1. このテンプレートに適用するために、以下のシナリオ (エッジタイプ) のいずれかを選択します。

  • On Success (成功時): 正常に完了すると、次のテンプレートを実行します。

  • On Failure (失敗時): 失敗時に、別のテンプレートを実行します。

  • Always (常時): 成功または失敗にかかわらず、実行を継続します。

  1. ワークフローで使用するジョブテンプレートのパラメーターに Prompt on Launch (起動プロンプト) が選択されている場合には、Prompt ボタンが表示され、ノードレベルでこれらの値を変更できるようになります。ウィザードを使用して値を変更し、確定 をクリックします。

_images/wf-editor-prompt-button-wizard.png

注釈

プロンプト表示が可能な必須フィールドで、デフォルト設定のないジョブテンプレートの場合は、ノード作成時にこれらの値を指定してから、選択 ボタンを有効にする必要があります。プロンプト ボタンで値を指定するまで 選択 ボタンが無効となる例として、1) ジョブテンプレートで Prompt on Launch (起動プロンプト) チェックボックスを選択しているがデフォルトを指定していない場合、または 2) 必須の survey の質問を作成しているが、デフォルトの回答を指定していない場合が挙げられます。ただし、これは認証情報には該当 しません。ノードの作成時に、ノードの起動に必要な情報を指定する必要があるので、ワークフローノードの作成時には、起動時にパスワードを必要とする認証情報は、使用できません。そのため、ジョブテンプレートで認証情報の入力を求めるプロンプトが表示される場合には、Tower により、パスワードを必要とする認証情報を選択できないようになります。

また、対象のノードで変更を適用するには、プロンプトのウィザードの終了時に、選択 をクリックする必要があります。選択しないと、変更内容が、実際にジョブテンプレートで設定した値に戻ってしまいます。

_images/wf-editor-wizard-buttons.png

各ワークフローノードに関連付けられるテンプレートは、プロセスの進行時に選択した実行シナリオに基づいて実行されます。鍵アイコンをクリックして、各実行シナリオとそのジョブタイプの凡例を表示します。

_images/wf-editor-key-dropdown-list.png

ノードにカーソルを置くと、選択したノードの削除 delete template、または別のテンプレートの追加 add template を実行できます。

_images/wf-editor-create-new-add-template.png

注釈

任意の数の組み合わされたジョブテンプレートまたはジョブ/インベントリーの同期でワークフロージョブテンプレートを作成する場合、それらのいずれかはリソースのインベントリーから削除され (リソースは存在しなくなります)、影響を受けるワークフロージョブテンプレートのワークフロービジュアライザーに戻ると、未完了のノードとして見つからないリソースが表示されます。

_images/wf-incomplete-node.png

未完了のノードを修正するために、これを新規ジョブテンプレートで更新するか、またはこれをワークフローから削除します。

別のノードをノード間に挿入し、図をドラッグして分割したシナリオを示します。

_images/wf-editor-create-new-add-template-split.png

最後に挿入したノードのやり直しを実行する必要がある場合、右側のペインが開いたら 取り消し をクリックするか、右側のペインから選択せずに別のノードをクリックします。

ノードを編集する必要がある場合、編集するノードをクリックすると右側のペインには現在の選択が表示されます。変更を加えたら 選択 をクリックしてそれらをグラフィカルビューに適用します。

以下は、ジョブテンプレートで開始される 3 つのタイプのジョブがすべて含まれるワークフローの例です。これが実行に失敗する場合は、プロジェクト同期ジョブに進み、成否にかかわらず、インベントリーの同期ジョブに進みます。

_images/wf-editor-create-new-add-template-example.png

ウィンドウの先頭にあるキーを使用して、グラフィックな説明と関連付けられる記号および色の意味を特定します。

兄弟ノードを作成するなど、同じ親ノードから複数のノードを追加できます。

_images/wf-editor-create-siblings.png

注釈

異なるエッジタイプを持つ兄弟ステップのセットが設定されたワークフローで、それらの兄弟ステップの 1 つには割り当てられた追加のステップがあると、そのステップはワークフローから削除されます。

_images/wf-edge-conflict-example.png

追加ステップは兄弟ステップのセットに自動的に加わります。兄弟に複数のエッジタイプが使用されている場合は、エッジの競合が発生します。

_images/wf-edge-conflict-error.png

この競合を解決してからワークフロージョブテンプレートを保存する必要があります。競合を解決するには、すべての兄弟ステップに同じエッジタイプを持たせます。

設定アイコン (settings) をクリックしてビューのズーム、パニング、または再配置を行います。ワークフロー図をドラッグしてそれを画面上に再配置します。

  1. ノードの追加/編集が終了したら、選択 をクリックして、変更を保存し、グラフィカルビューに表示します。

重要

このペインで 閉じる をクリックしても、作業は保存されません。代わりにワークフロービジュアライザー全体を閉じて最初からやり直す必要があります。

  1. ワークフロージョブテンプレートのビルドが完了したら、保存 をクリックしてワークフロージョブテンプレート全体を保存し、新しいワークフローテンプレートの詳細ページに戻ります。

16.7. ワークフロージョブテンプレートの起動

ワークフロージョブテンプレートを起動するには、以下を実行します。

  1. テンプレートナビゲーションリンクまたはワークフロージョブテンプレートの詳細ビューからワークフロージョブテンプレートにアクセスし、下方にスクロールしてテンプレートの一覧からこれにアクセスします。

Wf templates - home with example wf template

  1. 起動するワークフローの横にある launch アイコンをクリックします。

ジョブテンプレートおよび Survey に設定される追加変数と共に、Tower は起動時にジョブテンプレートに追加される変数として同じ変数を自動的に追加します。さらに、Tower は web ブラウザーをこのジョブの詳細ページにリダイレクトし、ここで進捗と結果が表示されます。

_images/wf-launch-details-page-example.png

16.8. ワークフロージョブテンプレートのコピー

Ansible Tower では、ワークフロージョブテンプレートのコピー機能を使用できます。ワークフロージョブテンプレートをコピーすることを選択した場合、関連付けられたスケジュール、通知、またはパーミッションのコピーは 実行されません。スケジュールおよび通知は、ワークフロージョブテンプレートのコピーを作成するユーザーまたは管理者によって再度成される必要があります。ジョブテンプレートをコピーするユーザーには管理者権限が付与されますが、パーミッションはワークフロージョブテンプレートには割り当てられません (コピーされません)。

  1. テンプレート ナビゲーションリンクまたはワークフロージョブテンプレートの詳細ビューからコピーするワークフロージョブテンプレートにアクセスし、下方にスクロールしてテンプレートの一覧からこれにアクセスします。

Wf templates - home with example wf template

  1. copy ボタンをクリックします。

新規テンプレートが、コピーしたテンプレートの名前とタイムスタンプが設定された状態で開きます。

名前フィールドの内容を新規の名前に置き換え、他のフィールドのエントリーを指定または変更してこのページを完了します。

  1. 完了したら 保存 をクリックします。

注釈

プロジェクトが使用する認証情報で現在のユーザーに 読み取り アクセスしか割り当てられていない場合など、リソースに、適切なレベルのパーミッションが割り当てられていない関連リソースが含まれる場合に、このリソースはコピーできません。ただし、ワークフロージョブテンプレートでは、このノードのいずれかで、権限のないジョブテンプレートを使用する場合に、ワークフロージョブテンプレートをコピーすることは可能ですが、コピーしたワークフロージョブテンプレートでは、ワークフロージョブテンプレート内の適切なフィールドがなくなります。

16.9. 追加変数

注釈

追加の厳密な extra_vars 検証が Ansible Tower 3.0.0 で追加されました。ジョブ起動 API に渡される extra_vars は、以下が True の場合のみ受け入れられます。

  • それらは有効な survey の変数に対応するものである。

  • ask_variables_on_launch は True に設定されている。

Survey 変数を渡す際に、それらは Tower 内の追加変数 (extra_vars) として渡されます。これは、(Survey で実行するように) 追加変数をワークフローテンプレートに渡すと、インベントリーおよびプロジェクトから渡される他の変数が上書きされる可能性があるために注意が必要です。

たとえば、インベントリーの定義された変数が debug = true であるとします。この変数 debug = true はワークフローテンプレート Survey で上書きされる可能性があります。

渡す必要のある変数が上書きされないようにするには、それらを Survey で再定義することで組み込むことができます。追加変数はインベントリー、グループおよびホストのレベルで定義できることに注意してください。

以下の表では、Ansible の変数の順序との比較で、Ansible Tower の変数の順序の動作 (階層) を示しています。

Ansible Tower 変数の順序の階層 (最後に一覧表示された win)

_images/Architecture-Tower_Variable_Precedence_Hierarchy-Workflows.png