В Ansible 2.2
У меня есть файл Ansible hosts:
[webserver]
aegir.dev
[hostmaster]
aegir.dev
у меня есть два group_vars/
файлы:
# group_vars/webserver.yml
my_var:
- vagrant
и
# group_vars/hostmaster.yml
my_var:
- vagrant
- aegir
и пьеса:
- hosts: webserver
tasks:
- debug: var=my_var
- hosts: hostmaster
tasks:
- debug: var=my_var
Вывод:
PLAY [webserver] ***************************************************************
TASK [setup] *******************************************************************
ok: [aegir.dev]
TASK [debug] *******************************************************************
ok: [aegir.dev] => {
"my_var": [
"vagrant",
"aegir"
]
}
PLAY [hostmaster] **************************************************************
TASK [setup] *******************************************************************
ok: [aegir.dev]
TASK [debug] *******************************************************************
ok: [aegir.dev] => {
"my_var": [
"vagrant",
"aegir"
]
}
Почему оба webserver
и hostmaster
используйте переменные из hostmaster.yml
?
Наверное, я не использую group_vars
правильно, но как я могу это исправить?
РЕДАКТИРОВАТЬ
Реальный сценарий состоит в том, что у меня одна и та же роль выполняется в двух группах, одна из которых webserver
который на самом деле содержит 4 общих сервера и hostmaster
группа, которая является веб-сервером + дополнительная конфигурация для той же роли (пользователь aegir существует только на aegir.dev, а не на трех других веб-серверах)
Это ожидаемое поведение. Видеть документация:
В любом разделе переопределение переменной перезапишет предыдущий экземпляр. Если несколько групп имеют одну и ту же переменную, выигрывает последняя загруженная. Если вы дважды определите переменную в разделе play's vars :, победит вторая.