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

使用win_disk_facts遍历磁盘时结果首现空字典的问题排查

问题解决:Ansible循环生成磁盘详情时去除开头空字典

原代码问题分析

你的代码存在两个核心问题:

  • 错误地用字符串拼接方式构造mdisk变量,而非使用Ansible原生的列表/字典操作,导致数据结构混乱
  • 初始值mdisk|d({})设为空字典,第一次循环时会将空字典与新生成的磁盘字典拼接成嵌套列表,直接导致开头出现空字典

修正后的代码

- name: 获取磁盘信息
  win_disk_facts:

- name: 构造磁盘详情列表
  set_fact:
    mdisk: "{{ mdisk | d([]) + [
      {
        'name': item.friendly_name,
        'Firmware_version': item.firmware_version
      }
    ] }}"
  loop: "{{ ansible_disks }}"

代码说明

  1. 初始值设置:用mdisk | d([])将mdisk初始化为空列表(而非空字典),确保第一次循环从空列表开始追加元素
  2. 列表追加操作:用+操作符将每次循环生成的单个磁盘字典(包裹在[]中作为列表元素)追加到mdisk列表
  3. 简化取值:直接用item.friendly_name替代json_query,语法更简洁高效

修正后的输出示例

"ansible_facts": {
    "mdisk": [
        {
            "name": "abcde",
            "Firmware_version": "x1y2z3"
        },
        {
            "name": "xyze",
            "Firmware_version": "2341"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:55:34