job (ジョブ) は、Ansible Playbook をホストのインベントリーに対して起動する Tower のインスタンスです。
ジョブリンクには、ジョブの一覧とそれらのステータスが表示 (正常に完了、失敗、またはアクティブ (実行中の) ジョブとして表示) されます。この画面から実行できるアクションには、特定のジョブの詳細および標準出力、ジョブの起動、またはジョブの削除が含まれます。
Tower 検索機能を使用して各種の条件に基づいてジョブを検索します。Tower 検索についての詳細は、検索 の章を参照してください。
どのタイプのジョブをクリックしても、そのジョブのジョブの詳細ビューに移動します。このビューは 2 つのセクションから構成されます。
詳細 ペインには、ジョブの基本的なステータスおよびその開始時間が表示されます。詳細 ペインの右上にあるアイコンからジョブの再起動 () または削除 () を実行できます。
詳細 ペイン: ジョブ実行についての詳細を提供します。
名前: 関連付けられたインベントリーグループの名前。
ステータス: 以下のいずれかになります。
- 保留中: インベントリーの同期は作成されていますが、まだキューに入れられていないか、または開始されていません。すべてのジョブ (インベントリーソースの同期に限らない) はシステムで実際に実行可能になるまで保留中の状態になります。ジョブが保留にされる理由には、依存関係にある実行中のジョブの終了を待機する必要があることや、設定された場所にジョブの実行容量が十分にないことがあります。
- 待機中: インベントリーの同期はキューに入れられており、実行を待機中です。
- 実行中: インベントリーの同期が進行中です。
- 成功: インベントリー同期ジョブが成功しました。
- 失敗: インベントリーの同期ジョブが失敗しました。
説明: 失敗の理由についての説明です。
ライセンスエラー: インベントリーの同期 ジョブについてのみ表示されます。これが True の場合、インベントリーの同期でホストが追加されたために、Tower の管理ホストのライセンス数が制限を上回りました。
開始: ジョブが Tower で開始された時点のタイムスタンプ。
完了日時: ジョブの完了時点のタイプスタンプ。
経過時間: ジョブに要した時間の合計。
起動タイプ: 手動、スケジュール済み、または 依存関係
認証情報: このインベントリー同期で使用される認証情報。
ソース: クラウドインベントリーのタイプ。
上書き: True の場合、外部ソースに存在していたホストおよびグループは削除され、Tower インベントリーから削除されます。インベントリーソースで管理されていなかったホストおよびグループは、次に手動で作成されたグループにプロモートされるか、またはプロモート先となる手動で作成されたグループがない場合には、インベントリーの「すべて」のデフォルトグループに置かれます。False の場合、外部ソースに見つからないローカルの子ホストおよびグループはインベントリー更新プロセスの影響を受けません。
変数の上書き: True の場合、子グループおよびホストのすべての変数は削除され、外部ソースにある変数で置き換えられます。False の場合、マージが実行され、ローカル変数と外部ソースにある変数が組み合わされます。
これらの項目をクリックすると、適切な場合には該当するジョブテンプレート、プロジェクトその他の Tower オブジェクトが表示されます。
標準出力 ペインでは、インベントリー同期 Playbook の完全な実行結果が表示されます。ここでは、Ansible のコマンドラインで実行した時に表示される情報と同じ情報が表示され、これはデバッグの際に役立ちます。標準出力ペインの右上隅にあるアイコンでは、出力をメインビューに切り替えたり ()、出力をダウンロードしたりできます ()。
詳細 ペインには、ジョブの基本的なステータスおよびその開始時間が表示されます。詳細 ペインの右上にあるアイコンからジョブの再起動 () または削除 () を実行できます。
詳細 ペイン: ジョブ実行についての詳細を提供します。
名前: 関連付けられたインベントリーグループの名前。
ステータス: 以下のいずれかになります。
- 保留中: SCM ジョブは作成されていますが、まだキューに入れられていないか、または開始されていません。すべてのジョブ (SCM ジョブに限らない) はシステムで実際に実行可能になるまで保留中の状態になります。ジョブが保留にされる理由には、依存関係にある実行中のジョブの終了を待機する必要があることや、設定された場所にジョブの実行容量が十分にないことがあります。
- 待機中: SCM ジョブはキューに入れられており、実行を待機中です。
- 実行中: SCM ジョブが進行中です。
- 成功: 直前の SCM ジョブが成功しました。
- 失敗: 直前の SCM ジョブが失敗しました。
開始: ジョブが Tower で開始された時点のタイムスタンプ。
完了日時: ジョブの完了時点のタイプスタンプ。
経過時間: ジョブに要した時間の合計。
起動タイプ: 手動 または スケジュール済み。
プロジェクト: プロジェクトの名前。
これらの項目をクリックすると、適切な場合には該当するジョブテンプレート、プロジェクトその他の Tower オブジェクトが表示されます。
標準出力 ペインでは、SCM 更新の完全な実行結果が表示されます。ここでは、Ansible のコマンドラインで実行した時に表示される情報と同じ情報が表示され、これはでデバッグに役立ちます。標準出力ペインの右上隅にあるアイコンでは、出力をメインビューに切り替えたり ()、出力をダウンロードしたりできます ()。
Playbook 実行 ジョブのジョブの詳細ビューには、ジョブテンプレート ページからジョブを起動した後にもアクセスできます。
詳細 ペインには、ジョブの基本的なステータスおよびその開始時間が表示されます。詳細 ペインの右上にあるアイコンからジョブの再起動 () または削除 () を実行できます。
詳細 ペイン: ジョブ実行についての詳細を提供します。
ステータス: 以下のいずれかになります。
- 保留中: Playbook 実行は作成されていますが、まだキューに入れられていないか、または開始されていません。すべてのジョブ (Playbook に限らない) はシステムで実際に実行可能になるまで保留中の状態になります。ジョブが保留にされる理由には、依存関係にある実行中のジョブの終了を待機する必要があることや、設定された場所にジョブの実行容量が十分にないことがあります。
- 待機中: Playbook 実行はキューに入れられており、実行を待機中です。
- 実行中: Playbook 実行が進行中です。
- 成功: 直前の Playbook 実行が成功しました。
- 失敗: 直前の Playbook 実行が失敗しました。
テンプレート: ジョブが起動されるジョブテンプレートの名前。
開始: ジョブが Tower で開始された時点のタイムスタンプ。
完了日時: ジョブの完了時点のタイプスタンプ。
経過時間: ジョブに要した時間の合計。
Launch By (起動:): このジョブを起動したユーザー、ジョブ、またはスケジュール済みのスキャンの名前。
インベントリー: このジョブを実行するために選択されたインベントリー。
マシンの認証情報: このジョブで使用される認証情報の名前。
詳細: ジョブテンプレートの作成時に設定される詳細レベル。
追加変数: ジョブテンプレートの作成時に渡される追加変数がここに表示されます。
これらの項目をクリックすると、適切な場合には該当するジョブテンプレート、プロジェクトその他の Tower オブジェクトが表示されます。
標準出力 ペインには、Ansible Playbook の完全な実行結果が表示されます。ここでは、Ansible のコマンドラインで実行した時に表示される情報と同じ情報が表示され、これはデバッグに役立ちます。イベントの概要、ホストのステータス、ホストのイベントを表示することができます。標準出力ペインの右上隅にあるアイコンでは、出力をメインビューに切り替えたり ()、出力をダウンロードしたりできます ()。
イベントの概要では、この Playbook の一部として実行されたイベントの集計が表示されます。
ホストのステータスバーは、標準出力 ペインの上部で実行されます。ホストステータスバーのセクションにカーソルを置くと、その特定のステータスに関連付けられたホスト数が表示されます。
Tower 検索を使用して、特定ンおイベント、ホスト名、およびそれらのステータスを検索します。特定のステータスのホストのみをフィルターするには、以下の有効なステータスのいずれかを指定します。
以下の例には、失敗したホストのみを含めた検索が表示されています。
Tower 検索の使用についての詳細は、検索 の章を参照してください。
標準出力ビューには、特定のジョブで発生するイベントすべてが表示されます。デフォルトでは、すべての行で全詳細が表示されるように展開されています。すべて折り畳む () を使用して、プレイおよびタスクのヘッダーのみを含むビューに切り替えます。標準出力のすべての行を表示するには、() ボタンをクリックします。
または、それぞれのプレイやタスクの横にある矢印アイコンをクリックすると、その詳細をすべて表示することができます。矢印をクリックして横向きから下向きに切り替えると、プレイまたはタスクに関連付けられている行が拡大されます。矢印をもう一度クリックして横向きの位置に戻すと、折りたたみ表示になり、行が非表示になります。
拡張/縮小モードで詳細を表示する際の留意点:
標準出力 ペインからイベントの行をクリックすると、ホストイベント ダイアログが別のウィンドウに表示されます。このウィンドウでは、特定のイベントの影響を受けるホストが表示されます。
ホストイベント ダイアログでは、選択したイベントの影響を受けるホストに関する情報と、それに関連するプレイおよびタスクが表示されます。
JSON 形式で結果を表示するには、JSON タブをクリックします。
Tower は、物理メモリーの容量および Playbook の複雑度に基づいて実行できる同時ジョブの数を制限します。Ansible Tower 3.1.0 は、クラスターに N の追加 Tower ホストを設定してジョブ容量を追加します。Ping API エンドポイントでジョブを実行するための Tower の容量を表示することができます。ジョブ自体には、タスクが実行されているノードも表示されます。
「起動時の更新」の設定にチェックが付けられている場合、インベントリーまたはプロジェクトに依存するジョブテンプレートはキャッシュタイムアウト内である場合、それらについての更新をトリガー することもできます。同じプロジェクトまたはインベントリーに依存するキャッシュタイムアウト内の複数のジョブが起動する場合、それらのプロジェクトまたはインベントリー更新の 1 つのみが作成されます (それに依存するジョブ単位ではない) 。
問題がある場合は、プロジェクトまたはインベントリーソースのキャッシュアウトタイムアウトを 60 秒に設定してみてください。
Tower 容量の制限は、Tower サーバーの RAM 容量に関連します。インベントリー更新のサイズや保存されるマシンの合計数を制限するためです。使用されるアルゴリズムは以下のようになります。
50 + ((total memory in megabytes) / 1024) - 2) * 75
50 がベースラインになります。
実行される各ジョブは以下の計算に基づいて容量を消費します。
(number of forks on the job) * 10
フォークはリモートホストとの通信時に生成される並列プロセスのデフォルト数を定めます。Ansible フォーク数のデフォルトはきわめて控え目な値で (5) に設定されています。Tower でフォークの値を渡さない (これを 0 のままにする) 場合、Ansible は 5 つのフォーク (デフォルト) を使用します。これにより、容量の使用量の値は 50 になります。フォークの値を Tower で (1) に設定する場合、Ansible は入力した値を使用し、(1) フォークが作成されます。説明にあるように 0 以外の入力が使用されます。
フォーク数は使用可能なホストの数に自動的に制限されるため、これは処理できるネットワークおよび CPU ロードの制限になります。多くのユーザーはこれを 50 に設定し、他のユーザーはこれを 500 以上に設定します。数多くのホストがある場合、高い値であるほど、それらのすべてのホストでのアクションの速度が速くなります。すべてのジョブについて Ansible で使用されるデフォルトのフォーク値を変更するには ansible.cfg
ファイルを編集することができます。ただし、このデフォルトを変更した値は容量の計算には使用されません。
例として、2 GB メモリーを持つシステムにフォーク数が 0 (Tower のデフォルト) の 1 つのジョブがある場合、アルゴリズムは以下のようになります。
50 + ((2048 / 1024) - 2) * 75 = 50
4 GB メモリーを持つシステムにフォーク数が 0 (Tower のデフォルト) の 1つのジョブがある場合、コールバックを含む (4) タスクを同時に実行できます。
50 + ((4096 / 1024) - 2) * 75 = 200
「Playbook のインベントリーのホスト数」がフォークの数より少ない場合、Tower はフォークの代わりにホスト数を乗数として使用します。この最小値には、ジョブテンプレートまたは Playbook の hosts:
行に設定される「制限」は反映されません。
システムの容量計算は事実上無効にでき、以下のように Tower 設定ファイル (/etc/tower/settings.py
) の値を設定することで定数が指定されます。
SYSTEM_TASK_CAPACITY = 300
/api/v2/instances
および /api/v2/instance_groups
API エンドポイントで使用される容量は、以下のような行を参照して確認できます。"capacity": 125,
"consumed_capacity": 75,
"percent_capacity_remaining": 60.0,
Capacity: 60
が現在の計算されている設定です。
実行する容量がある限り、Tower は可能な限り多くのジョブをキューに入れ、実行するよう試行します。ただし、いくつかの留意すべきブロッカーおよび例外もあります。