在a.yml文件中,我存储了如下数据
---
Server:
"Node1" : ["Node1", "Owner1", "ID1"]
"Node2" : ["Node2", "Owner2", "ID2"]
现在,在xyz。我试图调试如下所示的变量,我在命令行(ansible-playbook xyz)中传递Node_Name。yml -e "Node_Name=Node1")
---
- name: "Print Variable value"
hosts: all
gather_facts: no
vars:
Node_Name: Node
ID_Name: "{{ Server.{{ Node_Name }}[2] }}"
tasks:
- name: "Print the id"
debug:
msg:
- "The id is {{ ID_Name }}"
但这是失败的错误-Template error while templating string :expected name or number
有人可以帮助解决这个问题,让我知道我怎么能得到ID打印输出。这里的预期输出是ID1
不要嵌套{{...}}
标记
回忆一下,访问一个嵌套变量。语法Server.Node1
与Server["Node1"]
完全等价。第二种语法允许我们在键上使用变量(和字符串插值),所以我们可以这样写:
Server[Node_Name]
换句话说:
- name: "Print Variable value"
hosts: all
gather_facts: no
vars:
Node_Name: Node
ID_Name: "{{ Server[Node_Name][2] }}"
tasks:
- name: "Print the id"
debug:
msg:
- "The id is {{ ID_Name }}"