#amazon-web-services #ansible
#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
идентификатора тома региона, где prod
является переменной и reg
является переменной.
Ответ №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