在给我的剧本打电话时,我给了一个额外的变量,其中包含:
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}} 。>
答案 0 :(得分:0)
这似乎是由于您引用vars
而不是直接引用变量的方式引起的。尝试以下方法:
VAR_2: "{{ MyDIC['dic_key2'] }}"
如果这不是您想要的,则可以通过在播放中使用set_fact
来解决此问题:
- set_fact:
VAR_2: "{{ vars['MyDIC']['dic_key2'] }}"