Ansible访问嵌套变量

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 [

在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 [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

太棒了,弗拉基米尔。我认为查找正是我在这里需要的。非常感谢!