具有参数化包含任务的ansible组变量与额外变量

ansible group vars vs extra vars with parameterized include tasks

我看到我的 group_vars/all 中定义了一个值,我希望从我的 -e @local-vars.yml 文件中看到被覆盖的值。在正常情况下,-e 根据文档获胜,但在使用参数化包含的这种更复杂的情况下,似乎 -e 值没有在正确的时间涉及。

playbooks/wtf-vars.yml

---
- hosts: appservers
  tasks:
    - name: WTF is up with this var
      debug: msg={{var1}}
    - include: "{{playbook_dir}}/tasks/wtf-vars-included.yml var1inner={{var1}}"

playbooks/tasks/wtf-vars-included.yml

---
- name: WTF is up with this var included
  debug: msg={{var1inner}}

playbooks/group_vars/all

---
var1: VALUE_FROM_GROUP_VAR_ALL

本地-vars.yml

---
var1: VALUE_FROM_DASH_E_FILE

运行 它与:

ansible-playbook -i inventory/local-dev.ini -e @local-vars.yml playbooks/wtf-vars.yml 打印此输出:

PLAY [appservers] *************************************************************

TASK: [WTF is up with this var] ***********************************************
ok: [va] => {
    "msg": "VALUE_FROM_DASH_E_FILE"
}
ok: [vb] => {
    "msg": "VALUE_FROM_DASH_E_FILE"
}

TASK: [WTF is up with this var included] **************************************
ok: [vb] => {
    "msg": "VALUE_FROM_GROUP_VAR_ALL"
}
ok: [va] => {
    "msg": "VALUE_FROM_GROUP_VAR_ALL"
}

PLAY RECAP ********************************************************************
va                         : ok=2    changed=0    unreachable=0    failed=0
vb                         : ok=2    changed=0    unreachable=0    failed=0

ansible-playbook -i inventory/local-dev.ini -e @local-dev.yml   0.27s user 0.22s system 78% cpu 0.628 total

所以我的问题是为什么 -e 值在这两种情况下都没有获胜?

首先,恕我直言,这是一个错误。您应该将其作为 Github 问题提交给 ansible。

其次,我怀疑发生这种情况是因为 include 行被较早地解析,在一些错误的方式中没有考虑额外的变量。