Error handling 如何知道使用AWX API启动ansible play时失败的任务?
我打算使用AWXAPI在AWX上启动ansible作业,并从ansible playbook获得一个回调,以了解该游戏的结果 为此,我使用Error handling 如何知道使用AWX API启动ansible play时失败的任务?,error-handling,ansible,ansible-awx,Error Handling,Ansible,Ansible Awx,我打算使用AWXAPI在AWX上启动ansible作业,并从ansible playbook获得一个回调,以了解该游戏的结果 为此,我使用/api/v2/job\u templates//launch/和一些额外的变量来向我的游戏传递参数 { "extra_vars": { "target": "w.x.y.z", (put here a real IP) "directory_name_1": "dir1", "directory_na
/api/v2/job\u templates//launch/
和一些额外的变量来向我的游戏传递参数
{
"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\u metadata}}
我把我正在使用的剧本放在这里,它非常简单,它在第一个目录中创建了两个目录和一个文件
- 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的新手,我正在与我认为相对简单的观点进行斗争。。。因此,任何提示或想法都是受欢迎的
Thx。如果它对某人有帮助,我实际上确认它做了我在上面寻找的事情,即显示如果使用它的web客户端(或通过API提供),在您运行的每个剧本中哪个任务失败。ARA在分析awx运行方面做得很好,但它必须在awx服务器上设置(运行AWX实例的主机),如果我理解正确的话 解决方法是使用
awx
命令行界面(请参阅和*):
watch--color'awx--conf.hosthttps://awx.site --conf.username my.user--conf.password“my_super_secret”-k-f人工作业事件列表--作业3232445--事件“runner_on_failed”--过滤器“stdout”
还可以为不同的“?event=runner\u on\u failed”调用API,如:
或其他“过滤器”,如:
awx--conf.hosthttps://awx.site --conf.username my.user--conf.password“my_supersecret”-k-f人工作业事件列表--作业3232445--事件“runner_on_unreachable”--过滤器“*”>/tmp/tmp
*(不要与awx cli/tower cli混淆-我认为它们是不同的)您还可以在游戏手册中的不同点为不同的主机执行多个失败的任务(例如,任务1上的主机1失败,任务3上的主机2失败,以及主机3成功所有这些任务)。如果不查看任务日志,恐怕您无法获得准确的信息。@Zeitounator,是的,您完全正确,事实上我忘记了提到,在我的主要用例中,大多数情况下,我只有一个{{target}因此将只在一台主机上运行playbook。实际上,我认为我发现了一些有用的东西:。我不确定它是否提供了API来查询结果,但至少它看起来可以在运行的任何playbook的任务级别显示结果