第6章 ジョブテンプレート
ワークフロージョブテンプレートについては、ワークフロージョブテンプレート を参照してください。
ジョブテンプレートは、Ansible ジョブを実行するための定義とパラメーターのセットです。ジョブテンプレートは、同じジョブを何度も実行する場合に役立ちます。また、Ansible Playbook コンテンツの再利用とチーム間のコラボレーションを促進します。
Templates ページには、現在使用可能なジョブテンプレートとワークフロージョブテンプレートの両方が表示されます。デフォルトのビューは折りたたまれており (コンパクト)、テンプレート名、テンプレートタイプ、およびそのテンプレートを使用して実行された最後のジョブのタイムスタンプが表示されます。各エントリーの横にある矢印 アイコンをクリックして、展開し、詳細情報を表示します。このリストは名前のアルファベット順に並べ替えられていますが、他の条件で並べ替えたり、テンプレートのさまざまなフィールドや属性で検索したりできます。
この画面から、ジョブテンプレートの起動 ( )、編集 ( )、コピー ( )、削除 ( ) を実行できます。
ワークフローテンプレートには、ワークフロービジュアライザーアイコン ( ) があります。これはワークフローエディターにアクセスするためのショートカットとして使用できます。
ワークフローテンプレートは、ジョブテンプレートを使用して構築できます。それらの隣にある Workflow Visualizer アイコンを表示するテンプレートは、ワークフローテンプレートです。アイコンをクリックすると、ワークフローをグラフィカルに構築できます。ジョブテンプレートの多くのパラメーターで、Prompt on Launch を選択できます。これはワークフローレベルで変更でき、ジョブテンプレートレベルで割り当てられた値には影響しません。手順は、ワークフロービジュアライザー セクションを参照してください。
6.1. ジョブテンプレートの作成
手順
-
ナビゲーションパネルから、
を選択します。 - Templates ページで、Create template リストから Create job template を選択します。
次のフィールドに適切な詳細を入力します。
注記フィールドで Prompt on launch を表示するチェックボックスがオンになっている場合、ジョブを起動すると、起動時にそのフィールドの値の入力を求めるプロンプトが表示されます。
ほとんどのプロンプト値は、ジョブテンプレートに設定されている値をオーバーライドします。
次の表に例外を示します。
フィールド オプション Prompt on Launch Name
ジョブの名前を入力します。
該当なし
Description
必要に応じて、任意の説明を入力します (オプション)。
該当なし
Job type
ジョブタイプを選択します。
- Run: 起動時に Playbook を開始し、選択したホストで Ansible タスクを実行します。
- Check: Playbook の「ドライラン」を実行します。実際に変更を加えずに、変更内容を報告します。チェックモードをサポートしていないタスクは無視され、変更予定の内容は報告されません。
ジョブタイプの詳細は、Ansible ドキュメントの Playbook セクションを参照してください。
はい
Inventory
ログインしているユーザーが使用できるインベントリーから、このジョブテンプレートで使用するインベントリーを選択します。
システム管理者は、ジョブテンプレート内の特定のインベントリーを使用できるように、ユーザーまたはチームのパーミッションを割り当てる必要があります。
必須です。
インベントリーのプロンプトは、後続のプロンプトウィンドウに独自のステップとして表示されます。
Project
ログインしているユーザーが利用できるプロジェクトから、このジョブテンプレートで使用するプロジェクトを選択します。
該当なし
Source control branch
このフィールドは、ブランチの上書きを許可するプロジェクトを選択した場合にのみ表示されます。ジョブの実行で使用する上書きブランチを指定します。空白のままにすると、プロジェクトから指定された SCM ブランチ (またはコミットハッシュまたはタグ) が使用されます。
詳細は、ジョブブランチのオーバーライド を参照してください。
はい
Execution Environment
このジョブの実行に使用するコンテナーイメージを選択します。実行環境を選択する前にプロジェクトを選択する必要があります。
必須です。
実行環境のプロンプトは、後続のプロンプトウィンドウに独自のステップとして表示されます。
Playbook
使用可能な Playbook から、このジョブテンプレートで起動する Playbook を選択します。このフィールドには、選択したプロジェクトのプロジェクトベースパスにある Playbook の名前が自動的に入力されます。あるいは、Playbook がリストされていない場合は、その Playbook での実行に使用するファイル (foo.yml など) の名前など、Playbook の名前を入力することもできます。無効なファイル名を入力すると、テンプレートにエラーが表示されるか、ジョブが失敗します。
該当なし
Credentials
アイコンを選択すると、別のウィンドウが開きます。
利用可能なオプションから、このジョブテンプレートで使用する認証情報を選択します。
リストが膨大な場合は、ドロップダウンメニューリストを使用して認証情報タイプでフィルタリングします。一部の認証情報タイプは、特定のジョブテンプレートに適用されないため、リストされていません。
- 選択した場合、デフォルトの認証情報が含まれるジョブテンプレートが起動したときに、別の認証情報を指定すると、デフォルトの認証情報が置き換えられます (認証情報が同じタイプの場合)。以下はこのメッセージの例です。
Job Template default credentials must be replaced with one of the same type.Please select a credential for the following types in order to proceed: Machine.
- 必要に応じて、さらに認証情報を追加できます。
- 認証情報のプロンプトは、後続のプロンプトウィンドウに独自のステップとして表示されます。
Labels
-
必要に応じて、このジョブテンプレートを説明するラベル (
dev
やtest
など) を指定します。 - ラベルを使用して、表示内のジョブテンプレートと完了したジョブをグループ化およびフィルタリングします。
- ラベルはジョブテンプレートの追加時に作成されます。ラベルは、ジョブテンプレートで指定されたプロジェクトを使用して、単一の組織に関連付けられます。組織のメンバーは、編集パーミッション (管理者ロールなど) を持っている場合、ジョブテンプレートにラベルを作成できます。
- ジョブテンプレートを保存すると、Expanded ビューの Job Templates の概要にラベルが表示されます。
- ラベルの横にある を選択して削除します。ラベルが削除されると、そのラベルはその特定のジョブまたはジョブテンプレートとの関連付けが解除されますが、ラベルを参照する他のジョブには関連付けられたままになります。
- ジョブは、起動時にジョブテンプレートからラベルを継承します。ジョブテンプレートからラベルを削除すると、ジョブからも削除されます。
- 選択すると、デフォルト値が指定されている場合でも、必要に応じて起動時に追加のラベルを指定するようにプロンプトが表示されます。
- 既存のラベルは削除されません。つまり、 を選択すると、、新たに追加したラベルだけ削除され、気温のデフォルトラベルは削除されません。
Forks
Playbook の実行中に使用する並列または同時プロセスの数です。値 0 は、
/etc/ansible/ansible.cfg
でオーバーライドされない限り、Ansible のデフォルト設定 (5 つの並列プロセス) を使用します。はい
Limit
Playbook が管理または影響を与えるホストのリストをさらに制限するためのホストのパターンを指定します。複数のパターンをコロン (:) で区切ることができます。コア Ansible と同じです。
- a:b は「a または b のグループに含まれる」という意味です。
- a:b:&c は、「a または b に含まれるが、c には必ず含まれなければならない」という意味です。
- a:!b は「a にはあるが、b には絶対にない」という意味です。
詳細は、Ansible ドキュメントの Patterns: targeting hosts and groups を参照してください。
はい
選択されていない場合、ジョブテンプレートがインベントリー内のすべてのノードに対して実行されるか、または Limit フィールドで事前定義されたノードに対してのみ実行されます。ワークフローの一部として実行する場合は、代わりにワークフロージョブテンプレートの制限が使用されます。
Verbosity
Playbook の実行時に Ansible が生成する出力レベルを制御します。Normal やさまざまな Verbose または Debug 設定から詳細度を選択します。これは details レポートビューにのみ表示されます。詳細ログには、すべてのコマンドの出力が含まれます。デバッグログは非常に詳細で、一部のサポート事例に役立つ SSH 操作に関する情報が含まれています。
詳細の値が
5
の場合、Automation Controller はジョブの実行時にブロックを実行し、これによりジョブが終了したことを示すレポートが遅延するため (レポートが作成されている場合でも)、ブラウザータブがロックアップする可能性があります。はい
Job slicing
このジョブテンプレートを実行するスライスの数を指定します。各スライスは、インベントリーの一部に対して同じタスクを実行します。ジョブスライスの詳細は、ジョブスライス を参照してください。
はい
Timeout
ジョブがキャンセルされるまでの実行時間 (秒単位) を指定できます。タイムアウト値を設定するには、次の点を考慮してください。
- 設定にはグローバルタイムアウトが定義されており、デフォルトは 0 で、タイムアウトがないことを示します。
- ジョブテンプレートの負のタイムアウト (<0) は、ジョブの "タイムアウト" はありません。
- ジョブテンプレートのタイムアウトが 0 の場合、ジョブはデフォルトでグローバルタイムアウトになります (デフォルトではタイムアウトなし)。
- 正のタイムアウトは、そのジョブテンプレートのタイムアウトを設定します。
はい
Show changes
Ansible タスクによって加えられた変更を確認できます。
はい
Instance groups
このジョブテンプレートに関連付ける インスタンスおよびコンテナーグループ を選択します。リストが膨大な場合は、 アイコンを使用してオプションを絞り込みます。ジョブテンプレートのインスタンスグループは、ジョブのスケジュール基準に影響します。ルールについては ジョブランタイムの動作 および ジョブ実行場所の制御 を参照してください。システム管理者は、ジョブテンプレート内のインスタンスグループを使用できるように、ユーザーまたはチームのパーミッションを割り当てる必要があります。コンテナーグループを使用するには管理者権限が必要です。
- 必須です。
選択すると、ジョブの優先インスタンスグループが優先順に提供されます。最初のグループの容量が不足している場合は、容量のあるグループが見つかるまでリスト内の後続のグループが検討され、見つかった時点でそのグループが選択されてジョブが実行されます。
- インスタンスグループの入力を求めるプロンプトが表示された場合、入力した内容が通常のインスタンスグループ階層を置き換え、組織とインベントリーのすべてのインスタンスグループをオーバーライドします。
- インスタンスグループのプロンプトは、後続のプロンプトウィンドウに独自のステップとして表示されます。
Job tags
Create メニューを入力して選択し、Playbook のどの部分を実行するかを指定します。詳細と例は、Ansible ドキュメントの Tags を参照してください。
はい
Skip tags
Create メニューを入力して選択し、スキップする Playbook の特定のタスクまたは部分を指定します。詳細と例は、Ansible ドキュメントの Tags を参照してください。
はい
Extra variables
- 追加のコマンドライン変数を Playbook に渡します。これは、ansible-playbook の "-e" または "-extra-vars" コマンドラインパラメーターで、これについては、Ansible Tower ドキュメント (Defining variables at runtime) に説明されています。
-
YAML または JSON を使用してキーまたは値のペアを提供します。これらの変数には優先順位の最大値があり、他の場所で指定された他の変数をオーバーライドします。
git_branch: production release_version: 1.5
は、値の例です。
必須です。
スケジュールで
extra_vars
を指定できるようにするには、ジョブテンプレートの変数に対して Prompt on launch を選択するか、ジョブテンプレートで Survey を有効にする必要があります。回答された Survey の質問はextra_vars
になります。必要に応じて、このテンプレートを起動するための次のオプションを設定できます。
-
Privilege Escalation: オンにすると、この Playbook を管理者として実行できるようになります。これは、
--become
オプションをansible-playbook
コマンドに渡すことと同じです。 - Provisioning callback: オンにすると、ホストが REST API 経由で Automation Controller にコールバックし、このジョブテンプレートからジョブを起動できるようになります。詳細は、プロビジョニングコールバック を参照してください。
Enable webhook: オンにすると、ジョブテンプレートの起動に使用される事前定義された SCM システム Web サービスとのインターフェイス機能が有効になります。GitHub と GitLab がサポートされている SCM システムです。
- Webhook を有効にすると、他のフィールドが表示され、以下の追加情報の入力を求められます。
- Webhook service: Webhook からリッスンするサービスを選択します。
- Webhook URL: POST 要求を送信する Webhook サービスの URL が自動的に入力されます。
- Webhook key: Webhook サービスが Automation Controller に送信するペイロードに署名する際に使用するための、生成された共有シークレット。Automation Controller がこのサービスから Webhook を受け入れるようにするには、Webhook サービスの設定で指定する必要があります。
Webhook credential: オプションで、Webhook サービスにステータス更新を送信するために使用する認証情報として、GitHub または GitLab の Personal Access Token (PAT) を指定します。
選択する前に、認証情報が存在している必要があります。
認証情報を作成するには、認証情報タイプ を参照してください。
- Webhook の設定の関連情報については、Webhook の使用 を参照してください。
- Concurrent jobs: オンにすると、キュー内のジョブが相互に依存していない場合に同時に実行されるようになります。ジョブスライスを同時に実行する場合は、このボックスをオンにします。詳細は、Automation Controller の容量決定とジョブへの影響 を参照してください。
- Enable fact storage: オンにすると、ジョブの実行に関連するインベントリー内のすべてのホストについて収集されたファクトを Automation Controller が保存します。
- Prevent instance group fallback: このオプションをオンにすると、Instance Groups フィールドにリストされているインスタンスグループのみがジョブを実行できます。オフの場合、ジョブの実行場所の制御 で説明されている階層に基づいて、実行プール内の使用可能なすべてのインスタンスが使用されます。
-
Privilege Escalation: オンにすると、この Playbook を管理者として実行できるようになります。これは、
- ジョブテンプレートの詳細の設定が完了したら、 をクリックします。
テンプレートを作成してもジョブテンプレートページは終了せず、ジョブテンプレートの Details タブに進みます。テンプレートを保存したら、 をクリックしてジョブを開始できます。また、 をクリックして、権限、通知、完了したジョブの表示、アンケートの追加 (ジョブタイプがスキャンでない場合) などのテンプレートの属性を追加または変更することもできます。起動する前にまずテンプレートを保存する必要があります。そうしないと、 は無効のままになります。
検証
-
ナビゲーションパネルから、
を選択します。 - 新しく作成したテンプレートが Templates ページに表示されることを確認します。