てくなべ

ansible / network automation / 学習メモ / 思考メモ

[Ansible/AAP] ジョブの状態(成功、失敗など)の GUI と API でそれぞれ確認する

はじめに

AAP (Ansible Automation Platform) はジョブの状態を API で取得できます。

レスポンスボディの JSON のうち、status を見ると、実行中なのか終わって成功したのかなどを確認できます。一方、failed という、これまたある意味状態を示しそうな項目もあります。

それぞれの関係について知らべたかったので、GUI 上の見え方、status の値、failed の値をセットで確認したことをまとめます。

  • 検証環境
    • AAP 2.5 2025/04/09 パッチリリース

API によるジョブの状態を取得には、https://{AAPホスト}/api/controller/v2/jobs/{id} を GET します。本記事ではレスポンスボディの JSON を抜粋して掲載します。

あくまで、私の環境で試したらこうなったという記録であり、リファレンスではありませんのでご了承ください。

先にまとめ

先にまとめます。

GUI 上 API の status API の failed
成功 "successful" false
実行中 "running" false
失敗 "failed" true
エラー "error" true
取り消し済み "canceled" true
保留中 "pending" false

なお、API のドキュメントによると status のバリエーションには他にも newwaiting がありますが、再現できませんでした。

成功

ごく普通にジョブテンプレートが起動できて、正常に終わったパターンです。

GUI:

成功

API:

{
    // 略
    "status": "successful",
    // 略
    "failed": false,
    // 略
}

特筆すべきところはないかなと思います。"status": "successful" なので成功だということが分かりますし、"failed": false なので、失敗はしていないことも分かります。

実行中

ジョブの実行が開始されたけど、まだ実行中で終わっていない状態です。

API でジョブテンプレートの実行のリクエスト(POST /api/controller/v2/job_templates/{id}/launch/)した場合でも、非同期に実行を開始するので、実行が完了しないうちに状態を確認すると実行中になります。

GUI:

実行中

API:

{
    // 略
   "status": "running",
    "execution_environment": 4,
    "failed": false,
    // 略
}

実行中であり、まだ成功か失敗かも分からない状態です。"failed": false です。

失敗

ジョブを実行したけど、正常に完了しなかったケースです。

今回は、マネージドノードに接続できない状態で再現しました。

GUI:

失敗

API:

{
    // 略
    "status": "failed",
    // 略
    "failed": true,
    // 略
}

"failed": true となりました。明示的に、これは失敗、と示された印象です。

エラー

[2026/03/12 20:30 追記]

「エラー」の状態は、本記事の投稿当初は再現できていなかったのですが X で情報をいただきました

検証環境がハイブリッドノード1つだったのでどうやろうかと思ったのですが、 receptor という名前のコンテナを停止(systemctl stop receptor.service --user)した状態でジョブテンプレートを起動したら「エラー」を再現できました。

GUI:

エラー

(せっかくなのでログも)

エラーの詳細

API:

{
    // 略
    "status": "error",
    // 略
    "failed": true,
    // 略
}

取り消し済み

実行を開始したけど、完了前に取り消しした状態です。

今回はGUI上で「ジョブの取り消し」ボタンを押して再現しました。

GUI:

取り消し済み

API:

{
    // 略
    "status": "canceled",
    // 略
    "failed": true,
    // 略
}

"failed": true になるのは少し意外でした。

保留中

たとえば、ジョブテンプレートの同時実行が許可されていない設定(デフォルト)で、立て続けに同じジョブテンプレートを実行開始した場合は2回目以降の起動が保留になります。

GUI:

保留中

API:

{
    // 略
    "status": "pending",
    // 略
    "failed": false,
    // 略
}

おわりに

成功したかどうかは、"failed": false ではなく "status": "successful" を見るのが良いのかなと思いました。