我正在尝试通过从文件中加载一个值(例如,包含my_var
)来覆盖先前定义的变量LATEST
(当它设置为NEWVALUE
时)。
- name: Load from file
vars:
my_var: "{{ lookup('file', '~/file.txt') }}"
my_var2: "{{ lookup('file', '~/file.txt') }}"
debug: msg="my_var is {{ my_var }} my_var2 is {{ my_var2 }}"
when: "{{ my_var=='LATEST' }}"
打印
ok: [host] ==> {
"msg": "my_var is LATEST my_var2 is NEWVALUE"
}
所以我觉得我已经确认我正在正确加载值..但由于某种原因,我无法在先前设置的变量中设置lookup
的结果。禁用when
子句似乎没有任何区别。
我能做到吗?作为替代方案,我将使用第三个变量并将其设置为预先存在的值或文件中的值 - 但这对我来说似乎是不必要的一步。
Ansible版本 2.1.0.0 b.t.w。
答案 0 :(得分:0)
您在示例中定义的变量仅适用于单个调试任务。
正如你在评论中提到的,你想出了这个并使用了set_fact。是的,如果你传递了与extra-var相同的变量,那么它就不会工作,因为它有highest precedence。无法覆盖您作为extra-var传递的变量。