Documentation

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

workflow job template (ワークフロージョブテンプレート) は、単一ユニットとして、リリースプロセスの一部となっていたジョブの完全なセットを追跡するタスクを実行する一連の個別ジョブテンプレートをリンクします。

このメニューでは、現在利用可能なワークフローおよびジョブテンプレートの一覧が表示されます。テンプレートの一覧は 名前 または 説明 で並び替え、検索できます。ジョブテンプレート タブを使用して、ユーザーはワークフローまたはジョブテンプレートを起動し、スケジュールし、変更し、削除することもできます。

Wf templates - home with example wf template

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

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

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

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 <http://docs.ansible.com/playbooks_variables.html#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 - home with example wf template

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

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

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

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

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

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

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

15.3. 通知の使用

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

add notifications ボタンをクリックして通知を作成します。

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

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

15.4. Survey

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

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

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

注釈

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

15.4.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

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

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

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

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

15.5. ワークフローエディター

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

15.5.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. ノードの追加が終了したら、選択 をクリックして、グラフィカルビューにこれを表示します。

テンプレートの上にカーソルを置くと、選択したテンプレートの削除 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. ワークフロージョブテンプレートのビルドが完了したら、保存 をクリックして「Create New Workflow Template (新規ワークフローテンプレートの作成)」の詳細ページに戻ります。

重要

このペインで 閉じる をクリックすると作業は保存されません。代わりにワークフローエディター全体を閉じて最初からやり直す必要があります。

  1. 保存 をクリックし、ワークフロージョブテンプレート全体を保存します。

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

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

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

Wf templates - home with example wf template

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

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

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

15.7. スケジューリング

ジョブテンプレートの起動は、schedule ボタンを使用してスケジュールすることもできます。このボタンをクリックすると、スケジュールページが開きます。

Workflow Template - schedule saved

このページには、選択されたワークフロージョブテンプレートで現在利用できるスケジュールの一覧が表示されます。スケジュールの一覧は、以下のいずれかによって並び替え、検索できます。

  • 名前: スケジュール名をクリックすると、スケジュールの編集 ダイアログが開きます。
  • 初回実行日時: このタスクの最初にスケジュールされる実行
  • 次回実行日時: このタスクの次回にスケジュールされる実行
  • 最終実行日時: タスクに終了日時が設定されている場合、これはタスクの最後の実行になります。

スケジュール 画面の右上にあるボタンから以下のアクションを実行できます。

  • アクティビティーストリームの表示
  • 新規スケジュールの追加

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

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

  1. スケジュール画面で、add ボタンをクリックします。
  2. 以下のフィールドに該当する詳細を入力します。
  • 名前
  • 開始日
  • 開始時間
  • ローカルタイムゾーン: 入力した開始時間はこのタイムゾーンの時間になります。
  • 繰り返しの頻度: 更新頻度の変更に合わせて適切なオプションが表示されます。

注釈

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

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

Workflow Template - schedule add

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

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

Workflow Template - schedule saved

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

アクション列には、スケジュールで利用できるいくつかのアクションがあります。

  • スケジュールの編集
  • スケジュールの削除

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

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

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

Wf templates - home with example wf template

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

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

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

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

15.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