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

Ansible中对比两个字典,值不同时触发任务失败

解决Ansible字典值对比并触发失败的问题

正确实现代码

你可以通过以下任务实现需求,核心是将groups_space的字符串值转为整数后对比,当同键值不匹配时触发任务失败:

- name: 校验用户与组的空间配额是否一致
  fail:
    msg: "键{{ item }}的值不匹配:users_space为{{ users_space[item] }},groups_space为{{ groups_space[item] }}"
  loop: "{{ users_space.keys() | sort }}"
  when: users_space[item] != groups_space[item] | int

代码说明

  • loop: "{{ users_space.keys() | sort }}":遍历users_space的所有键(如果两个字典的键可能存在差异,可改用(users_space.keys() | union(groups_space.keys())) | sort确保覆盖所有键)
  • groups_space[item] | int:将groups_space中字符串类型的值转为整数,保证类型一致后再做对比
  • when条件:当同键的两个值不相等时,触发fail模块输出明确的错误信息

你原有代码的问题

  1. 变量名错误:when条件中使用的qsi_disk_space.key和quota_qsi.key并非你定义的字典变量,需替换为实际的users_space[item]和转换后的groups_space[item] | int
  2. 未做类型转换:groups_space的值是字符串类型,直接与users_space的整数对比会导致判断逻辑错误
  3. 逻辑不符需求:原有when条件判断的是键是否不等,而非需求中的值是否不等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:06