从字典中的变量键获取值

时间:2020-10-08 22:51:33

标签: amazon-web-services ansible

我有一个变量env:prod,我试图从prod列表中获取特定区域的值。

属性如下所示

   prod:
      us-west-2a:  xxxxxxxx
      us-west-2b:  xxxxxxxx
      us-east-1a:  xxxxxxxx
      us-east-1b:  xxxxxxxx

- set_fact:
    reg: "{{ ansible_ec2_placement_availability_zone }}"

- set_fact:
     detach_volumeid: '{{ vars[env].'reg' }}'

我正在尝试获取prod区域卷ID的值,其中prod是变量,而reg是变量。

1 个答案:

答案 0 :(得分:1)

特定的字典键可以用点(.)表示,但也可以用括号[]来表示。

当您要将键作为变量寻址时,将使用后面的形式。

给定剧本:

- hosts: all
  gather_facts: no
  
  tasks:
    - debug:
        msg: '{{ vars[env][reg] }}'
      vars:
        env: prod
        reg: us-east-1a
        prod:
          us-west-2a:  xxxxxxxx-w-2a
          us-west-2b:  xxxxxxxx-w-2b
          us-east-1a:  xxxxxxxx-e-1a
          us-east-1b:  xxxxxxxx-e-1b

这产生了回顾:

PLAY [all] ********************************************************************************************************

TASK [debug] ******************************************************************************************************
ok: [localhost] => {
    "msg": "xxxxxxxx-e-1a"
}

PLAY RECAP ********************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0