【发布时间】:2018-03-23 16:10:36
【问题描述】:
我正在尝试从 PostgreSQL 数据库中获取特定任务的 STDOUT 和 STDERR 以在提交评论中使用它。
我很难找到合适的桌子。有没有人试图从 Ansible Tower/AWX 获得特定的任务结果,STDOUT 和 STDERR?
我是在对着正确的树吠叫吗?
【问题讨论】:
我正在尝试从 PostgreSQL 数据库中获取特定任务的 STDOUT 和 STDERR 以在提交评论中使用它。
我很难找到合适的桌子。有没有人试图从 Ansible Tower/AWX 获得特定的任务结果,STDOUT 和 STDERR?
我是在对着正确的树吠叫吗?
【问题讨论】:
每个任务在main_jobevent 表的stdout 列中都有自己的输出。
prepare awx (text, int) as
select job_id, host_name, modified, playbook, play, role, stdout
from main_jobevent
where host_name = ANY (string_to_array($1, ','))
and changed
order by modified desc
limit $2;
execute awx( 'localhost,192.168.1.1', 3 );
这显示了主机 localhost 或 192.168.1.1 的三个最年轻的修改。
【讨论】:
使用 Ansible tower API 获取作业标准输出。例如: https:///api/v2/jobs//stdout/?format=json
检查 Ansible Tower API 文档 https://docs.ansible.com/ansible-tower/3.2.4/pdf/AnsibleTowerAPIGuide.pdf
【讨论】:
根据Tower API Reference Guide Jobs,可以通过 REST API 调用以纯文本形式获取完整的作业结果日志,例如
curl --silent -u ${TOWER_USER}:${TOWER_PASSWORD} -JL https://${TOWER_URL}/api/v2/jobs/${JobID}/stdout?format=txt_download -o job_${JobID}.log
产生一个名为job_${JobID}.log 的文件的输出。但没有直接要求工作的具体任务。
正如maletin 的answer 已经提到的,人们可以从JobID 的工作中收集特定的任务信息
SELECT job_id, host_name, modified, stdout
FROM main_jobevent
WHERE job_id = $1
ORDER BY modified ASC;
但它看起来像ANSI colored text。
【讨论】: