Eu tenho um servidor infra
que pertence a dois grupos de host diferentes. Para cada grupo de hosts, eu tenho configurações em group_vars/<host-group>.yml
:
# in group_vars/develop.yml
user_name: "develop"
...
E:
# in group_vars/infra.yml
user_name: "infra"
...
Meus hosts
são:
[deploy_servers]
int.openstack.mine
preprod.openstack.mine
prod.openstack.mine
[infra_servers]
infra.openstack.mine
[develop_servers]
infra.openstack.mine
int.openstack.mine
A playbook infra.yml
é:
---
- name: "Configure infrastructure hosts"
hosts: infra_servers
become: yes
roles:
- { role: "nickjj.user", tags: "user" }
- { role: "nickjj.docker", tags: "docker" }
- infra
A playbook develop.yml
é:
---
- name: "Configure development hosts"
hosts: develop_servers
become: yes
roles:
- { role: "nickjj.user", tags: "user" }
- { role: "nickjj.docker", tags: "docker" }
- develop
Agora, executando o livro de exercícios limitado aos servidores de desenvolvimento:
ansible-playbook -i hosts develop.yml
fará com que a variável user_name
escolha o valor errado infra
. O problema desaparece se eu remover o servidor infra
do grupo infra_servers
. Mas isso não está certo: o servidor é também um servidor infra e, quando o manual é executado para os servidores infra, a variável deve, de fato, obter o valor infra
.
Por que o valor errado é escolhido ao limitar o playbook ao develop_servers
?
Tags ansible