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

如何在Ansible的with_items循环中判断任务执行结果是否失败

解决Ansible with_items循环中基于所有子项结果设置failed_when的问题

当你用with_items循环执行多个命令后,原来的result结构会变成包含results列表的对象,每个列表元素对应一个命令的执行结果。要实现只要有任何一个子命令满足“返回码不为0/1”或“输出包含'err'”就标记整个任务失败,可以借助Jinja2的any()过滤器来遍历所有子项结果进行判断。

直接上可行的代码:

- shell: "{{ item }}"
  register: result
  failed_when: >
    result.results | any(
      item => item.rc not in [0, 1] or 'err' in item.stdout_lines
    )
  with_items:
    - ls
    - df

逻辑解释:

  • result.results:这是循环执行后存储所有子命令结果的列表,每个元素的结构和单命令执行时的result完全一致(包含rc、stdout_lines等字段)。
  • any()过滤器:只要列表中有任意一个元素满足后面的判断条件,整个表达式就会返回True,触发failed_when。
  • 判断条件:对每个子项结果,检查两个条件的逻辑或——返回码不在[0,1]范围内,或者输出行里包含err字符串。

这样就能实现你要的需求:只要有一个子命令不符合预期,整个任务就会标记为失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:12:36