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

如何在Ansible中用CLI变量值作为host_vars变量名取值?

在Ansible中通过变量值引用另一个变量的属性

当然可以实现这个需求,Ansible提供了两种常用的方式来间接引用目标变量:

方法1:使用vars内置变量

vars包含当前作用域内的所有变量,你可以通过变量名的字符串索引它,进而获取对应变量的属性。针对你的场景,正确写法如下:

{{ vars[thing]['does'] }}

方法2:使用hostvars变量

如果变量定义在host_vars中,也可以通过hostvars引用,用inventory_hostname指代当前主机:

{{ hostvars[inventory_hostname][thing]['does'] }}

完整Playbook示例

- name: 测试变量间接引用
  hosts: all
  tasks:
    - name: 输出目标变量的does属性
      debug:
        msg: "当前thing的does属性值是: {{ vars[thing]['does'] }}"

运行时传入参数:

ansible-playbook your_playbook.yml -e="thing=this"

为什么之前的写法无效?

  • {{ thing['does'] }}:thing是你传入的字符串"this",字符串本身没有does属性,所以无法得到预期结果。
  • {{ {{ thing }}['does'] }}:这种嵌套模板写法不符合Ansible语法规则,属于语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:15:45