可以打印包含另一个变量的变量值



在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.Node1Server["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 }}"

最新更新