我看到group_vars/all
中定义了一个值,我希望看到-e @local-vars.yml
文件中覆盖的值。在正常情况下,根据文档,-e
获胜,但在使用参数化包含的更复杂的情况下,似乎-e
值没有在正确的时间参与。
剧本/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}}"
剧本/任务/wtf-vars-included.yml
---
- name: WTF is up with this var included
debug: msg={{var1inner}}
剧本/group_vars/所有
---
var1: VALUE_FROM_GROUP_VAR_ALL
local-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
值在这两种情况下都没有获胜?
首先,恕我直言这是一个bug。你应该将此作为Github问题提交ansible.
第二,我怀疑发生这种情况是因为include行被较早地解析了,以某种错误的方式,额外的变量没有被考虑在内。