Dictionary Ansible-如何从以额外变量形式传入列表的dict中检索值

Dictionary 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与主机上运行的数据库

这就是我的困境。。。我要求用户通过额外的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与主机上运行的数据库进行比较

- 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