Подстановка Ansible Variable внутри словаря - PullRequest
0 голосов
/ 31 октября 2019

При вызове моей пьесы я даю дополнительную переменную, содержащую:

ansible-playbook -e "DIC=MyDIC"

или

ansible-playbook -e "DIC=MyDIC2"

В моей группе есть следующие переменные:

VAR_1: "{% if ENV=='test' %}OK{% else %}KO{% endif %}"
VAR_2: "{% if ENV=='test' %}OK2{% else %}KO2{% endif %}"

Тогда у меня есть следующий dic:

MyDIC:
  MyDIC2_key1: myvalue_1
  MyDIC2_key2: "result_is_{{ VAR_1 }}"
MyDIC2:
  MyDIC2_key1: myvalue_2
  MyDIC2_key2: "result_is_{{ VAR_2 }}"

Затем у меня есть другая переменная, которая просматривает мой dic:

VAR_2: "{{ vars[DIC]['dic_key2'] }}"

Здесь мне нужно использовать vars, потому что DICпеременная, которую нужно заменить на основе дополнительных переменных.

Но при выполнении Ansible не заменяет {{VAR_1}} на OK или KO при построении моей переменной из словаря.

1 Ответ

0 голосов
/ 01 ноября 2019

Кажется, это вызвано тем, что вы ссылаетесь на vars вместо прямой переменной. Попробуйте вместо этого:

VAR_2: "{{ MyDIC['dic_key2'] }}"

Если это не то, что вы хотели, то вы можете обойти это, используя set_fact в своей игре:

    - set_fact:
        VAR_2: "{{ vars['MyDIC']['dic_key2'] }}"
...