J'exécute une pièce Ansible et je voudrais répertorier tous les hôtes ciblés par celle-ci. Ansible docs mentionne que cela est possible , mais leur méthode ne semble pas fonctionner avec un groupe cible complexe (ciblage comme les hôtes: web_servers: & data_center_primary)
Je suis sûr que c'est faisable, mais je ne peux pas trouver de documentation supplémentaire à ce sujet. Existe-t-il un var avec tous les hôtes actuellement ciblés?
Vous recherchez la variable 'play_hosts'
---
- hosts: all
tasks:
- name: Create a group of all hosts by app_type
group_by: key={{app_type}}
- debug: msg="groups={{groups}}"
run_once: true
- hosts: web:&some_other_group
tasks:
- debug: msg="play_hosts={{play_hosts}}"
run_once: true
entraînerait
TASK: [Create a group of all hosts by app_type] *******************************
changed: [web1] => {"changed": true, "groups": {"web": ["web1", "web2"], "load_balancer": ["web3"]}}
TASK: [debug msg="play_hosts={{play_hosts}}"] *********************************
ok: [web1] => {
"msg": "play_hosts=['web1']"
}
inventaire:
[proxy]
web1 app_type=web
web2 app_type=web
web3 app_type=load_balancer
[some_other_group]
web1
web3
Vous pouvez utiliser l'option --list-hosts
pour ne répertorier que les hôtes concernés par un playbook.
En outre, il existe le dict hostvars
qui contient tous les hôtes actuellement connus d'Ansible. Mais je pense que le module setup
devait être exécuté sur tous les hôtes, vous ne pouvez donc pas ignorer cette étape via gather_facts: no
.