modules - Cómo enumerar todos los hosts actualmente seleccionados en un juego Ansible
ansible-playbook command (2)
Estoy ejecutando un juego de Ansible y me gustaría enumerar todos los hosts a los que apunta. Ansible docs menciona que esto es posible , pero su método no parece funcionar con un grupo objetivo complejo (segmentación como hosts: web_servers: & data_center_primary)
Estoy seguro de que esto es factible, pero parece que no puedo encontrar más documentación al respecto. ¿Hay una var con todos los hosts apuntados actualmente?
Estás buscando 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
resultaría en
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'']"
}
inventario:
[proxy]
web1 app_type=web
web2 app_type=web
web3 app_type=load_balancer
[some_other_group]
web1
web3
Puede usar la opción --list-hosts
para listar solo los hosts a los que afectaría un libro de jugadas.
Además, existen los hostvars
dict que contienen todos los hosts conocidos actualmente por Ansible. Pero creo que el módulo de setup
tuvo que ejecutarse en todos los hosts, por lo que no puede omitir ese paso a través de gather_facts: no
.