Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Error handling 如何知道使用AWX API启动ansible play时失败的任务?_Error Handling_Ansible_Ansible Awx - Fatal编程技术网

Error handling 如何知道使用AWX API启动ansible play时失败的任务?

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

我打算使用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_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的任务级别显示结果