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
相关产品推荐
相关产品推荐

