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

Ansible问题:仅在任务失败的实例上执行rescue块

问题分析与解决

你的Playbook核心问题是rescue块的语法错误,导致执行逻辑异常,才会出现所有服务器都触发rescue的情况。

错误原因

你在rescue块下的任务没有按照Ansible任务列表的规范编写——每个任务前必须加-标记,否则会被解析为无效的字典结构,破坏了block/rescue针对单台主机独立执行的逻辑。

修正后的Playbook

- block:
    - name: Set shell session
      shell: xyz
    - fail:
        msg: shell failed
  rescue:
    - set_fact:
        gist: "abc"
    - shell: abc

执行逻辑说明

正常情况下,Ansible的block/rescue是单台主机独立触发的:

  • 只有当某台服务器上的block内任务执行失败时,这台服务器才会进入rescue块执行后续任务;
  • 执行block任务成功的服务器,不会触发任何rescue内的操作。

修正语法后,就能实现你要求的“仅失败实例执行rescue”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:24:53