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

Ansible Playbook无法在磁盘使用率达80%时触发失败问题求助

解决Ansible Playbook磁盘使用率超限触发失败的问题

原脚本存在两处核心问题,导致无法实现需求,以下是问题分析和修正方案:

问题点分析

  • awk命令语法与逻辑错误:
    原命令使用了中文单引号‘’,会导致shell执行报错;同时awk的条件判断位置错误,无法正确筛选出使用率超80%的分区。
  • fail模块判断逻辑错误:
    filesystem.stdout是文本内容(可能为空或多行分区信息),转成int后无法正确反映是否有分区超限,导致条件永远不成立。

修正后的完整Playbook

- name: Check for filesystem usage over 80%
  shell: df -h | awk '$5+0 > 80 {print $1, $5}'
  register: filesystem
  changed_when: false  # 标记任务无系统状态变更
  failed_when: false   # 不直接因超限触发任务失败,交给后续fail模块统一处理

- name: Show disk usage details if over 80%
  debug:
    var: filesystem.stdout_lines
  when: filesystem.stdout != ""

- name: Fail if any disk partition usage exceeds 80%
  fail:
    msg: "Disk space is running low: {{ filesystem.stdout_lines | join('; ') }}"
  when: filesystem.stdout != ""

关键修改说明

  1. 修正awk命令:使用英文单引号,调整条件判断位置,确保只输出使用率超80%的分区名称和对应使用率。
  2. 优化shell任务属性:添加changed_when和failed_when避免误标记任务状态,让流程更可控。
  3. 调整fail触发条件:通过判断filesystem.stdout是否非空来确定是否存在超限分区,同时将超限信息嵌入错误提示,方便排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:05:24