词典中的Ansible变量替换

时间:2019-10-31 20:11:16

标签: dictionary ansible yaml jinja2

在给我的剧本打电话时,我给了一个额外的变量,其中包含:

ansible-playbook -e "DIC=MyDIC"

ansible-playbook -e "DIC=MyDIC2"

我的var组中有以下变量:

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是一个变量,需要根据额外的vars进行替换。

但是在执行Ansible时,从字典构造变量时,不要用 OK KO 替换 {{VAR_1}}

1 个答案:

答案 0 :(得分:0)

这似乎是由于您引用vars而不是直接引用变量的方式引起的。尝试以下方法:

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

如果这不是您想要的,则可以通过在播放中使用set_fact来解决此问题:

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