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

Ansible循环when条件字符串变量对比失败导致任务跳过问题求助

问题根因
  • when条件语法错误:Ansible的when字段会自动解析Jinja2表达式,不需要额外加{{ }}定界符,额外添加会导致表达式解析异常,条件判断失效。
  • 匹配逻辑错误:ansible_devices[item]是存储设备属性的字典对象,你写的in判断是校验字符串是否属于字典的键名,而非匹配设备名称或者设备属性中的字符串,逻辑完全不符合预期。
修复方案

根据你的实际匹配需求二选一即可:

方案1:匹配设备名称(即item返回的nvme1n1这类设备名)包含目标字符串

修正后的任务配置如下:

#MDM RAID0 All available free unmounted devices
- name: "Perform MDM Raid0 on all qualifying available devices on any cpu node"
  include_tasks:
    file: pfm_all_available_devices_mdm.yml
    apply:
      tags: pfm_all_available_devices_mdm
  when: device_pattern in item
  with_items: "{{ ansible_devices }}"

方案2:匹配设备属性(比如型号、控制器信息)包含目标字符串

如果需要匹配设备属性内的内容,比如model、host字段,建议额外加上大小写转换避免大小写不匹配问题,示例如下:

# 匹配设备型号中包含目标字符串,大小写不敏感
when: device_pattern | lower in ansible_devices[item].model | lower

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:54:04