Documentation

15. ジョブ

job (ジョブ) は、Ansible Playbook をホストのインベントリーに対して起動する Tower のインスタンスです。

ジョブリンクには、ジョブの一覧とそれらのステータスが表示 (正常に完了、失敗、またはアクティブ (実行中の) ジョブとして表示) されます。この画面から実行できるアクションには、特定のジョブの詳細および標準出力、ジョブの起動、またはジョブの削除が含まれます。

Jobs - home with example job

Tower 検索機能を使用して各種の条件に基づいてジョブを検索します。Tower 検索についての詳細は、検索 の章を参照してください。

どのタイプのジョブをクリックしても、そのジョブのジョブの詳細ビューに移動します。このビューは 2 つのセクションから構成されます。

  • 詳細 ペイン: ジョブについての情報およびステータスを提供するペイン。
  • 標準出力 ペイン: ジョブプロセスおよび出力を表示するペイン。
_images/job-details-view.png

15.1. Job Details (ジョブの詳細): インベントリーの同期

job details example of inventory sync

15.1.1. 詳細

詳細 ペインには、ジョブの基本的なステータス (実行中保留中成功、または 失敗) およびその開始時間が表示されます。詳細 ペインの右上にあるアイコンからジョブの再起動 (launch) または削除 (delete) を実行できます。

詳細 ペイン: ジョブ実行についての詳細を提供します。

  • 名前: 関連付けられたインベントリーグループの名前。
  • ステータス: 保留中実行中成功、または 失敗 のいずれかになります。
  • ライセンスエラー: インベントリーの同期 ジョブについてのみ表示されます。これが True の場合、インベントリーの同期でホストが追加されたために、Tower の管理ホストのライセンス数が制限を上回りました。
  • 開始: ジョブが Tower で開始された時点のタイムスタンプ。
  • 完了日時: ジョブの完了時点のタイプスタンプ。
  • 経過時間: ジョブに要した時間の合計。
  • 起動タイプ: 手動 または スケジュール済み
  • グループ: 同期しているグループ。
  • ソース: クラウドインベントリーのタイプ。
  • 上書き: このインベントリーの同期の 上書き の値。詳細は、インベントリー を参照してください。
  • 変数の上書き: このインベントリーの同期の 変数の上書き の値。詳細は、インベントリー を参照してください。

これらの項目をクリックすると、適切な場合には該当するジョブテンプレート、プロジェクトその他の Tower オブジェクトが表示されます。

15.1.2. 標準出力

標準出力 ペインでは、インベントリー同期 Playbook の完全な実行結果が表示されます。ここでは、Ansible のコマンドラインで実行した時に表示される情報と同じ情報が表示され、これはデバッグの際に役立ちます。標準出力ペインの右上隅にあるアイコンでは、出力をメインビューに切り替えたり (toggle)、出力をダウンロードしたりできます (download)。

15.2. Job Details (ジョブの詳細): SCM

Jobs - show job results for example job, scm

15.2.1. 詳細

詳細 ペインには、ジョブの基本的なステータス (実行中保留中成功、または 失敗) およびその開始時間が表示されます。詳細 ペインの右上にあるアイコンからジョブの再起動 (launch) または削除 (delete) を実行できます。

詳細 ペイン: ジョブ実行についての詳細を提供します。

  • 名前: 関連付けられたインベントリーグループの名前。
  • ステータス: 保留中実行中成功、または 失敗 のいずれかになります。
  • 開始: ジョブが Tower で開始された時点のタイムスタンプ。
  • 完了日時: ジョブの完了時点のタイプスタンプ。
  • 経過時間: ジョブに要した時間の合計。
  • 起動タイプ: 手動 または スケジュール済み
  • プロジェクト: プロジェクトの名前。

これらの項目をクリックすると、適切な場合には該当するジョブテンプレート、プロジェクトその他の Tower オブジェクトが表示されます。

15.2.2. 標準出力

標準出力 ペインでは、SCM 更新の完全な実行結果が表示されます。ここでは、Ansible のコマンドラインで実行した時に表示される情報と同じ情報が表示され、これはでデバッグに役立ちます。標準出力ペインの右上隅にあるアイコンでは、出力をメインビューに切り替えたり (toggle)、出力をダウンロードしたりできます (download)。

15.3. Job Details (ジョブの詳細): Playbook の実行

Jobs - show job details pane for example job, playbook

Playbook 実行 ジョブのジョブの詳細ビューには、ジョブテンプレート ページからジョブを起動した後にもアクセスできます。

15.3.1. 詳細

詳細 ペインには、ジョブの基本的なステータス (実行中保留中成功、または 失敗) およびその開始時間が表示されます。詳細 ペインの右上にあるアイコンからジョブの再起動 (launch) または削除 (delete) を実行できます。

詳細 ペイン: ジョブ実行についての詳細を提供します。

  • ステータス: 保留中実行中成功、または 失敗 のいずれかになります。
  • テンプレート: ジョブが起動されるジョブテンプレートの名前。
  • 開始: ジョブが Tower で開始された時点のタイムスタンプ。
  • 完了日時: ジョブの完了時点のタイプスタンプ。
  • 経過時間: ジョブに要した時間の合計。
  • Launch By (起動:): このジョブを起動したユーザー、ジョブ、またはスケジュール済みのスキャンの名前。
  • インベントリー: このジョブを実行するために選択されたインベントリー。
  • マシンの認証情報: このジョブで使用される認証情報の名前。
  • 詳細: ジョブテンプレートの作成時に設定される詳細レベル。
  • 追加変数: ジョブテンプレートの作成時に渡される追加変数がここに表示されます。

これらの項目をクリックすると、適切な場合には該当するジョブテンプレート、プロジェクトその他の Tower オブジェクトが表示されます。

15.3.2. 標準出力ペイン

標準出力 ペインには、Ansible Playbook の完全な実行結果が表示されます。ここでは、Ansible のコマンドラインで実行した時に表示される情報と同じ情報が表示され、これはデバッグに役立ちます。イベントの概要、ホストのステータス、ホストのイベントを表示することができます。標準出力ペインの右上隅にあるアイコンでは、出力をメインビューに切り替えたり (toggle)、出力をダウンロードしたりできます (download)。

15.3.2.1. イベントの概要

イベントの概要では、この Playbook の一部として実行されたイベントの集計が表示されます。

  • Play 数
  • タスク数
  • ホスト数
  • ジョブテンプレートの実行経過時間
_images/jobs-events-summary.png

15.3.2.2. ホストのステータスバー

ホストのステータスバーは、標準出力 ペインの上部で実行されます。ホストステータスバーのセクションにカーソルを置くと、その特定のステータスに関連付けられたホスト数が表示されます。

Job - All Host Events

15.3.2.4. 標準出力ビュー

標準出力ビューには、特定のジョブで発生するイベントすべてが表示されます。デフォルトでは、すべての行で全詳細が表示されるように展開されています。すべて折り畳む (collapse-all) を使用して、プレイおよびタスクのヘッダーのみを含むビューに切り替えます。標準出力のすべての行を表示するには、(expand-all) ボタンをクリックします。

または、それぞれのプレイやタスクの横にある矢印アイコンをクリックすると、その詳細をすべて表示することができます。矢印をクリックして横向きから下向きに切り替えると、プレイまたはタスクに関連付けられている行が拡大されます。矢印をもう一度クリックして横向きの位置に戻すと、折りたたみ表示になり、行が非表示になります。

_images/job-details-view-std-out-expand-collapse-icons.png

拡張/縮小モードで詳細を表示する際の留意点:

  • 縮小表示されない行で、対応する行番号と開始時間を含む、表示されたそれぞれの行。
  • プレイまたはタスクの完了後のプレイまたはタスクの開始時の拡張/縮小アイコン。
  • 特定のプレイまたはタスクのクエリーを実行する場合、それは完了したプロセスの最後に縮小表示されます。
  • エラーメッセージは、出力が大きすぎて表示できないことを示すエラーメッセージが表示される場合があります。これは、4000 を超えるイベントがある場合に生じます。エラーをバイパスするために、特定イベントについての検索およびフィルターを使用します。
  • 標準出力 ビューのイベント行にカーソルを置くと、この行の上にツールチップが表示され、このタスクで影響を受けた合計ホスト数およびステータスの内訳についての詳細を表示するオプションが表示されます。
_images/jobs-show-job-std-output-hover.png

標準出力 ペインからイベントの行をクリックすると、ホストイベント ダイアログが別のウィンドウに表示されます。このウィンドウでは、特定のイベントの影響を受けるホストが表示されます。

15.3.2.5. ホストイベント

ホストイベント ダイアログでは、選択したイベントの影響を受けるホストに関する情報と、それに関連するプレイおよびタスクが表示されます。

  • ホスト
  • ステータス
  • 固有 ID
  • Created (作成) タイムスタンプ
  • プレイ の名前
  • タスク の名前
  • 適用可能な場合、タスクの Ansible モジュール、およびモジュールのすべての 引数
  • タスクの 標準出力
_images/job-details-host-hostevent.png

JSON 形式で結果を表示するには、JSON タブをクリックします。

_images/job-details-host-hostevents-json.png

15.4. ジョブの同時実行

Tower は、物理メモリーの容量および Playbook の複雑度に基づいて実行できる同時ジョブの数を制限します。Ansible Tower 3.1.0 は、クラスターに N の追加 Tower ホストを設定してジョブ容量を追加します。Ping API エンドポイントでジョブを実行するための Tower の容量を表示することができます。ジョブ自体には、タスクが実行されているノードも表示されます。

「起動時の更新」の設定にチェックが付けられている場合、インベントリーまたはプロジェクトに依存するジョブテンプレートはキャッシュタイムアウト内である場合、それらについての更新をトリガー することもできます。同じプロジェクトまたはインベントリーに依存するキャッシュタイムアウト内の複数のジョブが起動する場合、それらのプロジェクトまたはインベントリー更新の 1 つのみが作成されます (それに依存するジョブ単位ではない) 。

問題がある場合は、プロジェクトまたはインベントリーソースのキャッシュアウトタイムアウトを 60 秒に設定してみてください。

Tower サーバーの RAM 容量およびインベントリーのサイズに関連する制限は、ファクトがメモリーに収集され、保存されるマシンの合計数に等しくなります。使用されるアルゴリズムは以下のようになります。

50 + ((total memory in megabytes) / 1024) - 2) * 75

50 がベースラインになります。

実行される各ジョブ:

(number of forks on the job) * 10

制限が Tower のデフォルト値の 0 の場合はデフォルトの値は 50 になります。

フォークは、リモートホストとの通信時に生成される並列プロセスのデフォルト数を決定するものです。フォーク数は可能なホストの数に自動的に制限されるため、これは処理できるネットワークおよび CPU ロードの制限になります。多くのユーザーはこれを 50 に設定し、他のユーザーはこれを 500 以上に設定します。数多くのホストがある場合、高い値であるほど、それらのすべてのホストでのアクションの速度が速くなります。この値を変更するには ansible.cfg ファイルを編集することができます。

Ansible フォーク数のデフォルトはきわめて控え目な値で (5) に設定されています。Tower でフォークの値を渡さない (これを 0 のままにする) 場合、Ansible は 5 つのフォーク (デフォルト) を使用します。フォークの値を Tower で (1) に設定する場合、Ansible は入力した値を使用し、(1) フォークが作成されます。説明にあるように 0 以外の入力が使用されます。

例として、2 GB メモリーを持つシステムにフォーク数が 0 (Tower のデフォルト) のジョブがある場合、アルゴリズムは以下のようになります。

50 + ((2048 / 1024) - 2) * 75 = 50

4 GB メモリーを持つシステムにフォーク数が 0 (Tower のデフォルト) のジョブがある場合、コールバックを含む (4) タスクを同時に実行できます。

50 + ((4096 / 1024) - 2) * 75 = 200

以下のように Tower 設定ファイル (/etc/tower/settings.py) に値を設定して変更できます。

SYSTEM_TASK_CAPACITY = 300

実行する機能がある限り、Tower は可能な限り多くのジョブをキューに入れ、実行するよう試行します。ただし、いくつかの留意すべきブロッカーおよび例外もあります。

  • ジョブテンプレートは、同じインベントリーで起動される別のジョブテンプレートの同じインスタンスをブロックします (これは変更された動作です。Ansible Tower 3.0 の前のバージョンでは、ジョブテンプレートは別のジョブテンプレートの同じインスタンスをブロックしていました)。
  • プロジェクト更新、SCM 更新、またはインベントリー更新は同じ更新を必要とする別のブロックをブロックします。
  • プロビジョニングコールバックで起動するジョブテンプレートは、単に同じホストのインスタンスとしてではなく実行できます。これにより、同じインベントリーで (2) テンプレートを実行することができます。ただし、インベントリーに更新が必要な場合、それらは実行されません。コールバックは、ホストからインベントリーへの「プッシュリクエスト」が受信される特殊なタイプのジョブテンプレートです。それらは 1 つのホストでのみ実行され、異なるコールバックおよびホストである限り、他のジョブと並行して実行できます。
  • システムジョブは 1 度に 1 回のみ実行できます。それらは他のすべてのジョブをブロックするため、競合を避けられるように独自に実行する必要があります。システムジョブは、システムジョブの前にスケジュールされたジョブの後に終了し、システムジョブの後にスケジュールされたジョブの前に終了します。
  • ジョブは追加のジョブ実行容量を待機中の場合にキューに入れられる場合があります。
  • アドホックなジョブは、指定されるアドホックジョブのインベントリーに対して実行されているインベントリー更新によってブロックされます。
  • 複数のジョブテンプレートが同時に実行できるように選択することができます。これは、同時実行ジョブの有効化 オプションでジョブテンプレート別に設定できるオプションです。
_images/job-templates-create-new-job-template-options.png