2016-05-26 13 views
0

gesetzt I Gruppe von Test VMs (mit reinem Debian) zu spielen, alle von ihnen auf Testnetz sind, so dass es in sich geschlossene Gruppe von VM ist. Diese VMs werden bald zerstört, daher möchte ich ihre Namen nicht zu DNS hinzufügen, während ich sie über Hostnamen im Ofen informieren muss.ansible: alle Hosts auflisten, um es Datei ‚Hosts‘ hinzufügen

Gibt es eine Möglichkeit, die ich /etc/hosts Dateien auf diesen VMs basierend auf Hosts IPs von Ansible hosts Datei bilden kann?

Ich kann Host-Namen festgelegt, wie die

192.168.0.5 myhostname=host01.local 
192.168.0.6 myhostname=host02.local 

so glaube ich irgendwie /etc/hosts so bilden können:

{{ ip }} {{ myhostname }} 

aber das archivieren. Ich glaube, ich über group['all'] laufen kann und verwenden lineinfile Linien /etc/hosts hinzuzufügen, aber es wird für mich nicht so weit arbeiten.

Antwort

0

Sie können die inventory_file Variable den Pfad Dateinamen der Hosts-Datei zu erhalten:

Auch erhältlich, inventory_dir ist der Pfadname des Verzeichnisses hält ansible Inventar Host-Datei, ist inventory_file der Pfadname und der Dateiname Zeige in die Inventar-Host-Datei von Ansible.

Reference

Sie können ihre Variablen mit so etwas wie lesen:

tasks: 
    - local_action: shell cat {{ inventory_file }} 
    register: result 

Als here empfohlen. Mehr zu local actions hier.

Sie können dann jinja filters und loops verwenden, um die Variable zu verwenden.

Verwandte Themen