У меня есть сервер 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?

0