如何在Ansible Playbook中将变量值作为索引传递使用
Ansible Playbook 变量作为索引取值方案
可以实现,你原写法的问题在于违反了Jinja2语法规则:不能在已经被{{ }}包裹的Jinja2表达式内部,再次嵌套{{ }}调用变量,直接在表达式内部写变量名即可。
基础修正写法
- hosts: vars: var1: 2 var2: "{{ data[var1] }}"
完整可运行测试用例(列表索引场景)
- name: 变量作为列表索引测试 hosts: localhost gather_facts: false vars: var1: 2 # 测试用列表数据 data: - 索引0对应内容 - 索引1对应内容 - 索引2对应内容 var2: "{{ data[var1] }}" tasks: - debug: msg: "通过变量索引取到的值为:{{ var2 }}"
运行后debug输出结果为通过变量索引取到的值为:索引2对应内容。
字典索引场景扩展
如果data是字典结构,变量存储字典的键,写法完全一致:
vars: # 变量存字典键名 var1: "user_name" data: user_name: "运维人员" role: "admin" var2: "{{ data[var1] }}"
如果需要拼接生成键名,使用Jinja2字符串拼接符~即可,示例:
# 取data中的key_2对应的值 var2: "{{ data['key_' ~ var1] }}"
内容的提问来源于stack exchange,提问作者asking
相关产品推荐
相关产品推荐

