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

Ansible Playbook:role3失败后执行final-role并返回失败状态的实现

解决Ansible Playbook中role3失败后执行final-role并返回失败状态的问题

你的核心问题在于原Playbook里的meta: clear_host_errors会清除主机错误状态,导致role3失败后Playbook最终返回成功。要满足所有三个目标,需要保留role3的失败标记,在执行完final-role后手动触发Playbook的失败状态。

修改后的Playbook示例

---
- hosts: "{{ target }}"
  gather_facts: no
  vars:
    role3_failed: false  # 初始化失败标记变量

  roles:
   - role1
   - role2

  tasks:
    - block:
        - name: 执行role3
          ansible.builtin.include_role:
            name: role3
      rescue:
        - name: 标记role3执行失败
          ansible.builtin.set_fact:
            role3_failed: true
        # 不再使用clear_host_errors,保留错误上下文但继续执行后续任务

    - name: 执行final-role收尾
      ansible.builtin.include_role:
        name: final-role

    - name: role3失败时触发Playbook失败状态
      ansible.builtin.fail:
        msg: "role3执行失败,已完成final-role收尾操作"
      when: role3_failed

关键逻辑说明

  1. 满足目标1:如果role1或role2失败,Play会直接终止,不会进入后续tasks阶段,自然不会运行final-role。
  2. 满足目标2:role3失败会触发rescue块,标记失败状态后继续执行后续的final-role。
  3. 满足目标3:执行完final-role后,通过fail模块判断role3_failed标记,若为true则手动触发失败,让整个Playbook最终返回FAILED状态,和role3直接失败时的状态一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:52:15