从文件覆盖ansible变量失败

时间:2016-06-14 14:52:39

标签: ansible ansible-playbook ansible-2.x

我正在尝试通过从文件中加载一个值(例如,包含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。

1 个答案:

答案 0 :(得分:0)

您在示例中定义的变量仅适用于单个调试任务。

正如你在评论中提到的,你想出了这个并使用了set_fact。是的,如果你传递了与extra-var相同的变量,那么它就不会工作,因为它有highest precedence。无法覆盖您作为extra-var传递的变量。