Ansible 访问嵌套变量
Ansible accessing Nested Variables
在 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
.
间接寻址在 Ansible 中不可用。您可以改用 vars
查找。参见 ansible-doc -t lookup vars
例如
- debug:
msg: "{{ lookup('vars', env).foo }}"
给予
msg: bar
在 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
.
间接寻址在 Ansible 中不可用。您可以改用 vars
查找。参见 ansible-doc -t lookup vars
例如
- debug:
msg: "{{ lookup('vars', env).foo }}"
给予
msg: bar