Ansible访问嵌套变量
在foo.yml中,Ansible访问嵌套变量,ansible,jinja2,Ansible,Jinja2,在foo.yml中,dev.foo变量包含一个bar值 --- - hosts: all vars: dev: foo: bar 我在命令行上将env变量设置为包含dev的值 ansible-playbook foo.yml --extra-vars "env=dev" 如果我试图调试env.foo tasks: - debug: msg: "{{ env.foo }}" 返回以下内容 TASK [
dev.foo
变量包含一个bar值
---
- hosts: all
vars:
dev:
foo: bar
我在命令行上将env
变量设置为包含dev
的值
ansible-playbook foo.yml --extra-vars "env=dev"
如果我试图调试env.foo
tasks:
- debug:
msg: "{{ env.foo }}"
返回以下内容
TASK [debug]
fatal: [server1.example.com]: FAILED! => {
"msg": "The task includes an option with an undefined variable.
The error was: 'str object' has no attribute 'foo'"
}
我不知道如何在jinja2中将
env
解析为dev
,然后访问嵌套变量dev.foo
,中没有间接寻址。您可以改用vars
lookup。参见ansible doc-t lookup vars
-调试:
msg:“{lookup('vars',env.foo}”
给予
msg:bar
太棒了,弗拉基米尔。我认为查找正是我在这里需要的。非常感谢!