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

Ansible中用JMESPath提取ESXi项UUID值失败求助

问题分析与解决方法

1. Ansible语法错误

原代码里的var:是拼写错误,正确关键字为vars:,且变量定义需放在vars块中,而非直接嵌套在set_fact模块内。

2. JMESPath查询逻辑错误

原查询语句Entities[*].Spec[?Type==VMWARE_ESXI_VCENTER].UUID存在逻辑问题:Spec是单个对象而非数组,不能使用数组过滤语法[?]。正确的思路是先过滤Entities数组中满足Spec.Type == 'VMWARE_ESXI_VCENTER'的元素,再提取对应元素的Spec.UUID。

修正后的完整代码

- name: "Get ESXiUUID"
  vars:
    jmesquery: "Entities[?Spec.Type == `VMWARE_ESXI_VCENTER`].Spec.UUID"
  set_fact:
    move_providers_filtered: "{{ move_providers_details_content | json_query(jmesquery) }}"

执行结果说明

执行后move_providers_filtered会返回一个包含目标UUID的数组:["uuid1234567890"]。如果需要直接获取单个UUID值,可以在查询后追加[0],或者后续使用move_providers_filtered[0]提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:55:22