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

Ansible中如何基于另一个变量提取字典类型的嵌套变量

Ansible 动态读取嵌套字典属性的解决方法

核心错误原因

Ansible 基于Jinja2模板语法,{{ }} 符号是模板变量的边界标记,内部引用其他变量时禁止再次嵌套{{ }},你之前的写法错误就出在嵌套了变量标记。
另外你尝试的vars['apps.{{ app_name }}']写法不生效,是因为该语句尝试查找根级别下名为apps.kong的单层key,而非先取apps字典再取其下的kong子属性。

正确配置写法

直接在变量边界内使用变量名作为字典的key即可:

vars_files:
  - "vars/apps_config"
vars:
  app_name: kong
  container_ports: "{{ apps[app_name]['ports'] }}"

如果要通过全局vars对象调用,写法如下:

container_ports: "{{ vars['apps'][app_name]['ports'] }}"

验证方法

你可以通过debug模块验证取值是否正确:

- name: 输出应用对应端口配置
  debug:
    var: container_ports

运行后会正确输出app_name对应应用的ports列表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:18:00