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

如何通过Ansible extra-vars传递字典列表?遇变量未定义错误

解决Ansible通过extra-vars传递字典列表的问题

你遇到的错误根源是:传递的real_servers_list是单个字典,而非字典组成的列表。Playbook里应该是在遍历列表元素,单个字典会被当成非列表类型处理,导致访问real_server_index属性时失败。

下面是几种正确的传递方式:

方式一:JSON格式传递列表

传递单个字典的列表

把字典包裹在数组[]内,执行命令:

ansible-playbook configure-l4.yaml -e '{"real_servers_list": [{"real_server_ip":"1.1.1.1", "real_server_index":"RealServer1"}]}'

传递多个字典的列表

直接扩展数组内容即可:

ansible-playbook configure-l4.yaml -e '{"real_servers_list": [{"real_server_ip":"1.1.1.1", "real_server_index":"RealServer1"}, {"real_server_ip":"1.1.1.2", "real_server_index":"RealServer2"}]}'

方式二:YAML格式传递

如果觉得JSON写起来繁琐,可用YAML格式,注意shell的引号处理:

ansible-playbook configure-l4.yaml -e "real_servers_list:
  - real_server_ip: 1.1.1.1
    real_server_index: RealServer1
  - real_server_ip: 1.1.1.2
    real_server_index: RealServer2"

也可以把YAML内容写入文件(比如vars.yml):

# vars.yml
real_servers_list:
  - { real_server_ip: 1.1.1.1, real_server_index: RealServer1 }
  - { real_server_ip: 1.1.1.2, real_server_index: RealServer2 }

再通过@引用文件执行命令:

ansible-playbook configure-l4.yaml -e @vars.yml

这样Playbook遍历real_servers_list时,就能正确获取每个字典的real_server_ip和real_server_index属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:05:11