使用 AWX API 启动时,如何知道 ansible play 在哪个任务中失败?
How to know in which task an ansible play failed when launched using AWX API?
我打算使用 AWX 在 AWX 上启动 ansible 作业 api 并从 ansible playbook 得到一个回电,以了解该操作的结果。
为此,我在正文中使用 /api/v2/job_templates/<job-template-id>/launch/
和一些 extra_vars 将参数传递给我的游戏。
{
"extra_vars": {
"target": "w.x.y.z", (put here a real IP)
"directory_name_1": "dir1",
"directory_name_2": "dir2",
"file_name": "file1" (or "subdir/file1" to make it fails)
}
}
我还在作业模板中配置了默认自定义的 webhook 通知:{{ job_metadata }}
我在这里放了我正在使用的剧本,它非常简单,它在第一个目录中创建了 2 个目录和一个文件。
- hosts: "{{ target }}"
name: fbplay
tasks:
- name: Create dummy directory 1
file:
path: "{{directory_name_1}}"
state: directory
- name: Create dummy directory 2
file:
path: "{{directory_name_2}}"
state: directory
- name: Create dummy file in directory
file:
path: "{{directory_name_1}}/{{file_name}}"
state: touch
mode: u=rw,g=r,o=r
所有这些工作都很好,如果出现错误,将在目标机器上执行 4 个任务:
TASK [Gathering Facts] *********************************************************
TASK [Create dummy directory 1] ************************************************
TASK [Create dummy directory 2] ************************************************
TASK [Create dummy file in directory] ******************************************
...但这是我关于错误处理的问题:如果出现错误,我如何在回调中指示哪个任务失败?
实际上我可以知道播放失败或没有播放,如果成功:
"hosts": {
"w.x.y.z": {
"failed": false,
"changed": 1,
"dark": 0,
"failures": 0,
"ok": 4,
"processed": 1,
"skipped": 0,
"rescued": 0,
"ignored": 0
}
}
如果失败:
"hosts": {
"w.x.y.z": {
"failed": true,
"changed": 0,
"dark": 0,
"failures": 1,
"ok": 3,
"processed": 1,
"skipped": 0,
"rescued": 0,
"ignored": 0
}
}
但我无法获得失败的确切任务(例如,在本例中,最后一个任务通过传递包含不存在的子目录的文件名)。
我是 AWX 和 ansible 的新手,我正在与我认为相对简单的观点作斗争......所以欢迎任何提示或想法。
提前致谢。
如果它对某人有帮助,我实际上确认 ARA 执行我在上面寻找的内容,即如果使用其网络客户端(或通过 API 提供)则显示具体的任务你 运行.
每本剧本都失败了
ARA 在分析 awx-runs 方面做得非常出色,但如果我理解正确的话,它必须在 AWX-server(主机 运行 AWX 实例)上设置。
一种解决方法是使用 awx
命令行界面(参见 https://docs.ansible.com/ansible-tower/latest/html/towercli/index.html 和 * ):
watch --color 'awx --conf.host https://awx.site --conf.username my.user --conf.password "my_super_secret" -k -f human job_events list --job 3232445 --event "runner_on_failed" --filter "stdout"'
也可以 滚动 API 以获得不同的“?event=runner_on_failed”,例如:
https://your.awx.site/api/v2/jobs/3232445/job_events/?event=runner_on_failed
或其他“过滤器”,例如:
awx --conf.host https://awx.site --conf.username my.user --conf.password "my_supersecret" -k -f human job_events list --job 3232445 --event "runner_on_unreachable" --filter "*" >/tmp/tmp
https://docs.ansible.com/ansible-tower/latest/html/towercli/output.html#human-readable-tabular-formatting
https://docs.ansible.com/ansible-tower/latest/html/towercli/reference.html#awx-job-events-list
*(不要与 awx-cli/tower-cli
混淆 - 我认为它们是不同的)
我打算使用 AWX 在 AWX 上启动 ansible 作业 api 并从 ansible playbook 得到一个回电,以了解该操作的结果。
为此,我在正文中使用 /api/v2/job_templates/<job-template-id>/launch/
和一些 extra_vars 将参数传递给我的游戏。
{
"extra_vars": {
"target": "w.x.y.z", (put here a real IP)
"directory_name_1": "dir1",
"directory_name_2": "dir2",
"file_name": "file1" (or "subdir/file1" to make it fails)
}
}
我还在作业模板中配置了默认自定义的 webhook 通知:{{ job_metadata }}
我在这里放了我正在使用的剧本,它非常简单,它在第一个目录中创建了 2 个目录和一个文件。
- hosts: "{{ target }}"
name: fbplay
tasks:
- name: Create dummy directory 1
file:
path: "{{directory_name_1}}"
state: directory
- name: Create dummy directory 2
file:
path: "{{directory_name_2}}"
state: directory
- name: Create dummy file in directory
file:
path: "{{directory_name_1}}/{{file_name}}"
state: touch
mode: u=rw,g=r,o=r
所有这些工作都很好,如果出现错误,将在目标机器上执行 4 个任务:
TASK [Gathering Facts] *********************************************************
TASK [Create dummy directory 1] ************************************************
TASK [Create dummy directory 2] ************************************************
TASK [Create dummy file in directory] ******************************************
...但这是我关于错误处理的问题:如果出现错误,我如何在回调中指示哪个任务失败?
实际上我可以知道播放失败或没有播放,如果成功:
"hosts": {
"w.x.y.z": {
"failed": false,
"changed": 1,
"dark": 0,
"failures": 0,
"ok": 4,
"processed": 1,
"skipped": 0,
"rescued": 0,
"ignored": 0
}
}
如果失败:
"hosts": {
"w.x.y.z": {
"failed": true,
"changed": 0,
"dark": 0,
"failures": 1,
"ok": 3,
"processed": 1,
"skipped": 0,
"rescued": 0,
"ignored": 0
}
}
但我无法获得失败的确切任务(例如,在本例中,最后一个任务通过传递包含不存在的子目录的文件名)。
我是 AWX 和 ansible 的新手,我正在与我认为相对简单的观点作斗争......所以欢迎任何提示或想法。
提前致谢。
如果它对某人有帮助,我实际上确认 ARA 执行我在上面寻找的内容,即如果使用其网络客户端(或通过 API 提供)则显示具体的任务你 运行.
每本剧本都失败了ARA 在分析 awx-runs 方面做得非常出色,但如果我理解正确的话,它必须在 AWX-server(主机 运行 AWX 实例)上设置。
一种解决方法是使用 awx
命令行界面(参见 https://docs.ansible.com/ansible-tower/latest/html/towercli/index.html 和 * ):
watch --color 'awx --conf.host https://awx.site --conf.username my.user --conf.password "my_super_secret" -k -f human job_events list --job 3232445 --event "runner_on_failed" --filter "stdout"'
也可以 滚动 API 以获得不同的“?event=runner_on_failed”,例如:
https://your.awx.site/api/v2/jobs/3232445/job_events/?event=runner_on_failed
或其他“过滤器”,例如:
awx --conf.host https://awx.site --conf.username my.user --conf.password "my_supersecret" -k -f human job_events list --job 3232445 --event "runner_on_unreachable" --filter "*" >/tmp/tmp
https://docs.ansible.com/ansible-tower/latest/html/towercli/output.html#human-readable-tabular-formatting https://docs.ansible.com/ansible-tower/latest/html/towercli/reference.html#awx-job-events-list
*(不要与 awx-cli/tower-cli
混淆 - 我认为它们是不同的)