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

Ansible解析JSON时报variable is not defined错误问题求助

问题根因

报错是Jinja2内置方法与JSON键名冲突导致的:
在Python/Jinja2语法中,所有字典对象都自带items()内置方法,用于遍历字典的键值对。当你使用点符号pool_details.json.items访问变量时,Jinja2会优先将items识别为字典的内置方法对象,而非API返回结果中名为items的自定义键。你尝试对方法对象用[0]做索引,自然就抛出「内置函数/方法对象没有0号元素」的错误。

解决方案

有两种通用的解决方式:

方案1:用方括号语法明确指定键名

直接用方括号包裹字符串键名访问,避开Jinja2的内置属性匹配优先级,修改第二个debug任务写法即可:

- debug:
    var: pool_details.json['items'][0].address

方案2:使用json_query过滤器

如果需要保持和jq类似的点符号查询语法,可以使用Ansible的json_query过滤器(需要提前在控制节点安装jmespath依赖:pip3 install jmespath):

- debug:
    var: pool_details | json_query('json.items[0].address')

验证

两种写法都可以正常提取到目标值 10.200.136.22,和你用jq查询的结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:36:03