我正在Ansible Tower中创建一个作业模板,然后使用REST API启动它。现在我需要检查Ansible Tower中当前运行的作业的状态(PENDING, RUNNING, FAILED, success, CANCELLED)。
我试图运行curl GET请求和jq一起解析json输出,但是在GET输出中有很多不同作业事件的字段以及以前的作业记录,我无法找出正确的方法来过滤我预期的输出(当前作业状态)。
/api/v2/jobs/{jobId}/
/api/v2/jobs/{jobId}/job_events/
/api/v2/jobs/{jobId}/job_host_sumamries/
/api/v2/jobs/{jobId}/activity_stream/
是否有一种方法可以获取具有作业id的特定作业的作业状态。
我认为@zeinatour有最好的解决方案…在这个url中:
<your tower server>/api/v2/jobs/<jobid>
查找这些条目:
"status": "successful",
"failed": false,
如果不是,要知道一个作业的状态将是poke in a loop:
<your tower server>/api/v2/jobs/<jobid>/stdout/
并查找PLAY RECAP并解析它:
PLAY RECAP *********************************************************************
<host> : ok=4 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
解析后,如果只有ok值,没有失败,我认为你可以得出结论,有一个成功!;)