6.5. ジョブランタイムの動作
Automation Controller の 一般 ユーザーに対するジョブの実行方法やレポートの報告方法は変更されません。システム側では、次の違いに注意してください。
ジョブが API インターフェイスから送信されると、ジョブはディスパッチャーキューにプッシュされます。各 Automation Controller インスタンスは、スケジューリングアルゴリズムを使用してそのキューに接続し、そこからジョブを受け取ります。クラスター内のどのインスタンスも、等しく処理を受け取り、タスクを実行する可能性があります。ジョブの実行中にインスタンスが失敗した場合、その作業は永続的に失敗したものとしてマークされます。
- プロジェクトの更新は、ジョブを実行する可能性のあるすべてのインスタンスで正常に実行されます。プロジェクトは、ジョブを実行する直前に、インスタンス上の正しいバージョンに同期されます。必要なリビジョンがすでにローカルでチェックアウトされており、Galaxy または Collections の更新が必要ない場合は、同期を実行できません。
-
同期が行われると、データベースには
launch_type = sync、job_type = runのプロジェクト更新として記録されます。プロジェクトの同期によってプロジェクトのステータスやバージョンは変更されません。代わりに、プロジェクトが実行されているインスタンスでソースツリーのみが更新されます。 -
Galaxy または Collections から更新が必要な場合、必要なロールをダウンロードする同期が実行され、
/tmp ファイルの容量が増加します。プロジェクトのサイズが大きい場合 (約 10GB)、/tmpのディスク容量が問題になることがあります。
6.5.1. ジョブの実行 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、ジョブが Automation Controller キューに送信されると、どのワーカーでもジョブを取得できます。ただし、ジョブを実行するインスタンスを制限するなど、特定のジョブを実行する場所を制御することができます。
インスタンスの一時的なオフライン化をサポートするために、各インスタンスで有効なプロパティーが定義されています。このプロパティーが無効になっている場合、そのインスタンスにはジョブは割り当てられません。既存のジョブは終了しますが、新しいジョブは割り当てられません。
トラブルシューティング
実行中の Automation Controller ジョブに対して キャンセル 要求を発行すると、Automation Controller は ansible-playbook プロセスに SIGINT シグナル を発行します。これにより、Ansible は新しいタスクのディスパッチを停止して終了しますが、多くの場合、すでにリモートホストにディスパッチされたモジュールタスクは完了するまで実行されます。この動作は、コマンドラインで Ansible を実行中に Ctrl+c を押した場合と似ています。
ソフトウェアの依存関係に関しては、実行中のジョブがキャンセルされた場合、そのジョブは削除されますが、依存関係は残ります。