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

如何在Ansible中仅捕获并输出执行失败的命令

筛选Ansible循环中执行失败的命令

你可以通过Ansible的过滤器精准筛选循环结果里执行失败的条目,以下是修改后的Playbook:

---
- name: Verify sudo access
  become: true
  become_user: "{{ install_user }}"
  shell: sudo -l | grep "{{ item }}"
  register: systemctl_result
  loop:
    - /usr/bin/mv
    - /usr/bin/olcenctl
    - /usr/bin/yum
  when: ansible_hostname in groups['operator']
  ignore_errors: true

- name: Print failed commands only
  debug:
    msg: "Failed command: {{ item.item }}"
  loop: "{{ systemctl_result.results | selectattr('failed', 'equalto', true) | list }}"
  when: systemctl_result.results | selectattr('failed', 'equalto', true) | list | length > 0

关键说明:

  • selectattr('failed', 'equalto', true):从循环结果集合中筛选出failed状态为true的条目
  • item.item:每个循环结果里的item字段对应你原loop中定义的命令路径
  • 末尾的when条件用于避免无失败命令时输出空循环结果

如果需要查看失败的详细错误信息,可将msg调整为:

msg: "Failed command: {{ item.item }} | Error detail: {{ item.stderr }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:21:15