我打算使用 AWX api 在 AWX 上启动 ansible 作业,并从 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 的新手,我正在与我认为相对简单的观点作斗争......所以欢迎任何提示或想法。
事先谢谢。