You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在启用ignore_errors的Ansible剧本末尾打印失败任务列表

解决方案

可以实现,核心是利用Ansible自动收集的ansible_failed_tasks变量,结合post_tasks在剧本末尾汇总打印失败任务。直接修改你的剧本如下:

- name: Playbook
  hosts: all
  vars_files:
    - "../vars/passwords.yml"
  ignore_errors: true  # 全局忽略错误,确保剧本完整执行
  roles:
    - role: ansible-role-1
    - role: ansible-role-2
  post_tasks:
    - name: 汇总打印所有失败任务
      debug:
        msg: |
          以下是执行失败的任务:
          {% for task in ansible_failed_tasks %}
          - 角色: {{ task.role | default('无角色') }}
            任务名: {{ task.name }}
            失败原因: {{ task.msg | default('未记录具体原因') }}
          {% endfor %}
      when: ansible_failed_tasks | length > 0

    - name: 提示无失败任务
      debug:
        msg: "所有任务执行成功,无失败项"
      when: ansible_failed_tasks | length == 0

关键说明:

  • ignore_errors: true:作用于整个play,让Ansible遇到错误时不终止,继续执行后续任务。
  • ansible_failed_tasks:Ansible内置变量,会自动收集所有执行失败的任务信息,每个任务对象包含role(所属角色)、name(任务名称)、msg(失败详情)等字段。
  • post_tasks:会在所有指定角色执行完成后才运行,确保能收集到所有角色的任务结果。

如果需要更详细的失败信息(比如任务所属模块、主机信息),可以在msg里添加更多字段,比如task.module、inventory_hostname等。

内容的提问来源于stack exchange,提问作者Pypynio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:42:02