有没有办法使用Ansible Tower Rest API获取作业的日志/输出

时间:2017-10-06 18:31:32

标签: ansible ansible-tower

我有另一个程序启动的安莎工作。现在我需要检查Ansible Tower中当前正在运行的作业的状态。我可以使用Rest API跟踪作业ID为正在运行/成功/失败/取消的状态。 但我还需要处理任务的控制台日志/输出信息以进行处理。是否有相同的直接API?

3 个答案:

答案 0 :(得分:1)

您可以通过他们的通话来完成此操作。 要获取工作编号,请对https://yourtowerinstance/api/v2/job_templates/使用GET 这将返回您的模板及其ID

要实时获取输出,请使用此powershell代码

    $stdouturl = "https://yourtowerinstance/api/v2/jobs/$($templateResult.id)/stdout/?format=txt"

$resultstd = Invoke-Restmethod -uri $stdouturl -Method 'Get' -Headers $authHeader
while ($resultstd -notmatch 'PLAY RECAP') {
    $resultstd = Invoke-Restmethod -uri $stdouturl -Method 'Get' -Headers $authHeader
    start-sleep -s 5
}
$resultstd

答案 1 :(得分:0)

启动模板后,您会获得作业ID,但我认为没有API可以获得作业的输出。但是,从作业部分下的仪表板中,您可以下载单个作业输出。

答案 2 :(得分:0)

您可以通过类似以下链接访问作业日志:

https://tower.yourcompany.com/api/v1/jobs/12345/stdout?format=txt_download

你的curl命令类似于: curl -O -k -J -L -u ${username):${password} https://tower.company.com/api/v1/jobs/${jobnumber}/stdout?format=txt_download

显然用您自己的值替换$ {username},$ {password}和$ {jobnumber}

使用的卷曲标志:

  • -O:输出实际下载的文件名
  • -k:不安全的SSL(不需要受信任的CA)
  • -J:文件下载的内容标题https://curl.haxx.se/docs/manpage.html#-J
  • -L:关注重定向
  • -u:用户名和密码