2015-02-25 15 views
10

Sto eseguendo una riproduzione Ansible e vorrei elencare tutti gli host presi di mira. docs ansible mentions that this is possible, ma il loro metodo non sembra di lavorare con un gruppo complesso mirato (target come host: Web_Servers: & data_center_primary)Come elencare tutti gli host attualmente mirati in una partita Ansible

Sono sicuro che questo è fattibile, ma cant sembrano trovare ogni ulteriore documentazione su di esso . C'è una var con tutti gli host attualmente scelti come target?

+1

sicuri di quale sezione ti riferisci nella documentazione . (forse link errato?) - Se non intendevi/lo sai, puoi usare lo switch '--list-hosts' per elencare solo gli host che potrebbero interessare un playbook. – udondan

+0

--list-hosts è il dato che voglio, ma per una riproduzione specifica, con un targeting diverso rispetto all'intero input – xabram

risposta

17

Siete alla ricerca di '' play_hosts variabile

--- 
- 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 

si tradurrebbe in

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 
Non
+0

Questo è quello che stavo cercando, grazie! Lo sapevi per esperienza o era nei documenti ansibili da qualche parte? Se nei documenti potresti collegare? – xabram

+0

Beh, l'ho trovato leggendo i gruppi google ansibili https://groups.google.com/forum/#!forum/ansible-project o qualche esempio di playbook (non ricordo esattamente) Ora quando so cosa sto cercando, c'è una frase su questo in: http://docs.ansible.com/playbooks_variables.html#id40 – sirkubax

+4

'play_hosts' è [depriacated from 2.2] (https://docs.ansible.com/ ansible/playbooks_variables.html). Ora puoi usare 'ansible_play_batch' – user2599522

9

Se non intendevi/lo sai, puoi usare l'interruttore --list-hosts per elencare solo gli host che potrebbero interessare un playbook.

Inoltre, vi è il dict hostvars che contiene tutti gli host attualmente noti ad Ansible. Ma penso che il modulo setup debba essere eseguito su tutti gli host, quindi non è possibile saltare questo passaggio tramite gather_facts: no.

+0

'--check' è utile anche. Nessuno dei due (list-hosts, check) è perfetto, ma è bello conoscerli. – tedder42

Problemi correlati