У меня есть сервер infra
который принадлежит к двум различным группам хостов. Для каждой группы хостов у меня есть настройки в group_vars/<host-group>.yml
:
# in group_vars/develop.yml
user_name: "develop"
...
А также:
# in group_vars/infra.yml
user_name: "infra"
...
Мои hosts
:
[deploy_servers]
int.openstack.mine
preprod.openstack.mine
prod.openstack.mine
[infra_servers]
infra.openstack.mine
[develop_servers]
infra.openstack.mine
int.openstack.mine
infra.yml
playbook это:
---
- name: "Configure infrastructure hosts"
hosts: infra_servers
become: yes
roles:
- { role: "nickjj.user", tags: "user" }
- { role: "nickjj.docker", tags: "docker" }
- infra
develop.yml
Develop.yml - это:
---
- name: "Configure development hosts"
hosts: develop_servers
become: yes
roles:
- { role: "nickjj.user", tags: "user" }
- { role: "nickjj.docker", tags: "docker" }
- develop
Теперь запуск playbook ограничен разработанными серверами:
ansible-playbook -i hosts develop.yml
приведет к тому, что переменная user_name
выберет неправильное значение infra
. Проблема исчезнет, если я удалю сервер infra
из группы infra_servers
. Но это неверно: сервер также является инфра-сервером, и когда playbook запускается для инфра-серверов, переменная действительно должна получить значение infra
.
почему выбирается неправильное значение при ограничении playbook develop_servers
?