2015-02-25 4 views
10

Ich führe ein Ansible-Spiel und möchte alle Hosts auflisten, auf die es ausgerichtet ist. Ansible docs mentions that this is possible, aber ihre Methode scheint nicht mit einer komplexen Zielgruppe zu arbeiten (Targeting wie Gastgeber: web_servers: & data_center_primary)Wie alle derzeit ausgewählten Hosts in einem Ansible-Spiel aufgelistet werden

Ich bin sicher, dass dies machbar ist, aber kann nicht scheinen, jede weitere Dokumentation zu finden . Gibt es eine Var mit allen aktuell ausgewählten Hosts?

+1

Nicht sicher, auf die Sie sich beziehen Abschnitt in der Dokumentation zu . (vielleicht falscher Link?) - Wenn du es nicht gemeint hast, kannst du den Schalter '--list-hosts' verwenden, um nur Hosts aufzulisten, die ein Playbook betreffen würde. – udondan

+0

--list-hosts sind die Daten, die ich möchte, aber für ein bestimmtes Spiel, mit unterschiedlichen Targeting als die Gesamteingabe – xabram

Antwort

17

Sie suchen 'play_hosts' Variable

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

in Folge hätte

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']" 
} 

Inventar:

[proxy] 
web1 app_type=web 
web2 app_type=web 
web3 app_type=load_balancer 

[some_other_group] 
web1 
web3 
+0

Das ist, was ich gesucht habe, Danke! Wusstest du das nur aus Erfahrung oder war das irgendwo in den Dokumenten? Wenn in den Dokumenten könnten Sie verknüpfen? – xabram

+0

Nun, ich habe es gefunden, indem ich entweder ansible google-groups https://groups.google.com/forum/#!forum/ansible-project oder irgendein Spielbuch-Beispiel gelesen habe (kann mich nicht genau erinnern) Jetzt, wenn ich weiß was Ich suche nach, es gibt einen Satz darüber in: http://docs.ansible.com/playbooks_variables.html#id40 – sirkubax

+4

'play_hosts' ist [depreasated von 2.2] (https://docs.ansible.com/ ansible/playbooks_variables.html). Sie können jetzt 'ansible_play_batch' verwenden – user2599522

9

Wenn Sie es nicht meinten/wissen, können Sie den Schalter --list-hosts verwenden, um nur Hosts aufzulisten, die ein Playbook betreffen würde.

Auch gibt es das dict hostvars, das alle derzeit bekannten Hosts zu Ansible enthält. Aber ich denke, dass das setup Modul auf allen Hosts ausgeführt werden musste, so dass Sie diesen Schritt über gather_facts: no nicht überspringen können.

+0

'--check' ist auch praktisch. Keiner von ihnen (Listen-Hosts, Scheck) ist perfekt, aber es ist schön, von ihnen zu wissen. – tedder42

Verwandte Themen