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

如何基于inventory_hostname获取Ansible嵌套变量的值?

解决Ansible中用inventory_hostname获取嵌套变量值的问题

问题核心是点语法无法动态引用变量作为键名,你需要用方括号语法实现动态键的查找:

正确写法示例

方法1:直接引用变量(推荐,更简洁)

xyz已是当前play的vars变量,无需使用lookup插件,直接用方括号传入inventory_hostname变量即可:

- name: Test
  hosts: server1
  gather_facts: false
  vars:
    xyz:
      server1:
        - abc: 7
  tasks:
    - debug:
        msg: "{{ xyz[inventory_hostname] }}"

方法2:结合lookup插件使用

如果一定要通过lookup('vars','xyz')获取变量,同样需要搭配方括号语法:

- name: Test
  hosts: server1
  gather_facts: false
  vars:
    xyz:
      server1:
        - abc: 7
  tasks:
    - debug:
        msg: "{{ lookup('vars','xyz')[inventory_hostname] }}"

原写法失效原因

你之前用的lookup('vars','xyz').inventory_hostname,会把inventory_hostname当成字面量键名去查找,也就是试图找xyz里键为"inventory_hostname"的内容,而非变量inventory_hostname的实际值(即server1)。方括号语法会先解析变量值,再用该值作为键去匹配嵌套内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:50:26