Ansible Tower REST API:有什么方法可以获得工作的 logs/output 吗?
Ansible Tower REST API: Is there any way to get the logs/output of a job?
我有一个由另一个进程启动的 Ansible 作业。现在我需要检查 Ansible Tower 中当前 运行 作业的状态。
我可以使用 REST API.
跟踪状态是否为 running/success/failed/canceled 和 /jobs/{id}
但我还需要处理任务的控制台logs/ouputs的信息。是否有任何直接的 API 要求相同?
启动模板后,您会得到 job-id 作为响应,但我认为没有 API 来获取作业的输出。但是,您可以从作业部分下的仪表板下载单个作业输出。
您可以通过 link 类似于以下方式访问作业日志:
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 : 用户名和密码
您可以通过他们的 restful 电话来完成此操作。
要获取工作编号,请对 https://yourtowerinstance/api/v2/job_templates/
使用 GET
这将 return 您的模板及其 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
我有一个由另一个进程启动的 Ansible 作业。现在我需要检查 Ansible Tower 中当前 运行 作业的状态。
我可以使用 REST API.
跟踪状态是否为 running/success/failed/canceled 和/jobs/{id}
但我还需要处理任务的控制台logs/ouputs的信息。是否有任何直接的 API 要求相同?
启动模板后,您会得到 job-id 作为响应,但我认为没有 API 来获取作业的输出。但是,您可以从作业部分下的仪表板下载单个作业输出。
您可以通过 link 类似于以下方式访问作业日志:
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 : 用户名和密码
您可以通过他们的 restful 电话来完成此操作。
要获取工作编号,请对 https://yourtowerinstance/api/v2/job_templates/
使用 GET
这将 return 您的模板及其 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