如何从一个字典中检索一个值,该字典的键是ansible中的组变量集合
(ansible 2.5)我试图从名为docker_facts的字典中检索一个值,其中environment是组_vars中的一个变量集。我无法让它工作。我试过用双引号,也试过不用引号。有人有办法让它工作吗如何从一个字典中检索一个值,该字典的键是ansible中的组变量集合,ansible,jinja2,Ansible,Jinja2,(ansible 2.5)我试图从名为docker_facts的字典中检索一个值,其中environment是组_vars中的一个变量集。我无法让它工作。我试过用双引号,也试过不用引号。有人有办法让它工作吗 meta_state: "{{ docker_facts['container_facts']['node']['/{{ environment }}/container1'] ['run_status']['inspect_status'] }}" 我得到的错误是: FAILED!
meta_state: "{{ docker_facts['container_facts']['node']['/{{ environment }}/container1'] ['run_status']['inspect_status'] }}"
我得到的错误是:
FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute '/{{ environment}}/container1'\n\nThe ....
#
这是剪下来的头发
{
"docker_facts": {
"container_facts": {
"node": {
"/dev/container1": {
"address": "12.x.x.x"
"monitor_rule": {
"monitor_templates": []
"type": "Snapshot"
},
"monitor_status": "Applied",
"name": "dev-server
"run_status": {
"inspect_status": "pass",
"enabled_status": "running",
},
"session_status": "ENABLED"
},
"/prod/container1": {
"address": "12.1.0.2",
........
........
以下是作为主机组变量位于组变量中的environments.yaml文件
环境:无法嵌套大括号。一旦你在大括号中有了代码,这段代码就会被解释为Jinja2,你可以在任何地方使用你的变量 要解决这个问题,只需使用不带引号的变量环境(带引号的是字符串,而不是变量)。在Jinja2中,还可以像Python中那样将变量与其他字符串连接起来:
meta_state: "{{ docker_facts['container_facts']['node'][environment + '/container1'] ['run_status']['inspect_status'] }}"
你能分享
docker\u facts
和environment
vars吗?@imjoseangel我在上面的原始问题中添加了docker\u facts的片段。我还添加了变量yaml文件。非常感谢。