Dictionary Ansible-如何从以额外变量形式传入列表的dict中检索值
这就是我的困境。。。我要求用户通过额外的VAR(-e“dc=canada)-e“dbname=dbx)输入数据库名称(即dbx)和位置(加拿大或美国)。从中,我将阅读VARDictionary Ansible-如何从以额外变量形式传入列表的dict中检索值,dictionary,ansible,Dictionary,Ansible,这就是我的困境。。。我要求用户通过额外的VAR(-e“dc=canada)-e“dbname=dbx)输入数据库名称(即dbx)和位置(加拿大或美国)。从中,我将阅读VAR vars: dbx: canada: dbu: db1 home: /u01/app/oracle america: dbu: db2 home: /u01/app/oracle 获取dbu。然后将dbu与主机上运行的数据库
vars:
dbx:
canada:
dbu: db1
home: /u01/app/oracle
america:
dbu: db2
home: /u01/app/oracle
获取dbu。然后将dbu与主机上运行的数据库进行比较
- name: see if db is running on this host
command: echo database is running here
when: dbu == item.database_name
with_items:
- "{{custom python module}}"
如果我把
- name: output
register: x
debug:
msg: "{{ dbx[dc].dbu }}"
但是,如果将dbx更改为dbname的值,则会出错
希望有意义。谢谢Zeitounator和lxop 通过添加另一个嵌套循环信息: 根据你的建议,我得到了结果:
{{ info[g_db][dc].dbu }}
您需要使用=>
-debug:msg=“{lookup('vars',dbname)[dc].dbu}}”
Hi-Zeitounator,它可以在Ansible 2.5+上运行,但是2.3呢?(需要在Linux 5服务器上运行)您也可以将变量嵌套更深一层-将所有的dbname
结构保存在名为db\u configs
或类似的lxop变量下,如果我将其嵌套更深一层,我如何才能检索它(ansible 2.3)=>yourtopnestedvar[dbname][dc]同时,您应该考虑使用最新版本的ANFILE,特别是在这样做时,就像<代码> PIP安装一样容易——升级ANTIONE