Ansible IP-Adresse, variabler host-Teil
Ich habe Folgendes problem:
Ich Schreibe playbook für die Einstellung der IP-Adresse auf der Kommandozeile in Ansible. Können sagen, 10.10.10.x. Ich brauche, um den letzten Teil meiner öffentlichen IP-sagen wir x ist.x.x.15 und ordnen Sie die private: 10.10.10.15. Gibt es eine variable dafür? Kann ich erfassen? Ich habe versucht, so etwas wie:
shell: "ip addr show | grep inet ...."
register: host_ip
Aber es ist nicht das, was ich brauche. Es funktioniert, aber nur für eine begrenzte Anzahl von Servern.
Das ganze sollte so sein:
"shell: /dir/script --options 10.10.10.{{ var }}"
sowie {{ var }}
sollte der host-Teil der öffentlichen IP.
Edit:
Danke! Hier meine endgültige Lösung:
- name: Get the host part of the IP
shell: host {{ ansible_fqdn }} | awk '{print $4}'
register: host_ip
Und
{{ host_ip.stdout.split('.')[3] }}
Um es später in das playbook.
Als pro @user24364 Antwort unten, ist es nicht klar, ob die Server über die öffentliche IP bereits zugewiesen wurde, oder, wenn du über einen NAT-router. Bitte aktualisieren Sie unsere Frage zur Klärung dieser situation.
InformationsquelleAutor plamer | 2014-08-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstelle der Verwendung eines system-utility, die Sie verwenden können, ansible Fakten wenn Sie finden, dass die interface-Namen von server zu server unterschiedlich.
Die Sie speziell erwähnt der letzten Teil meiner öffentlichen IP
Wenn du wirklich meinst Ihr öffentliche IP Sie benötigen einen externen Dienstleister, um es zu bekommen, da Ihr server kann hinter einem NAT. Hier ist eine option
Geben Sie Ihre öffentliche IP, die nächste um das Letzte Oktett, Sie könnten etwas tun wie:
InformationsquelleAutor jarv
Wie erwähnt von jarv das kann erreicht werden durch die Verwendung Fakten.
Dies kann auf folgende Arten geschehen:
Für eine Liste aller ipv4-Adressen:
Für die Standard-ipv4-Adresse:
Wenn Sie wissen, die ip-Adresse auf der Schnittstelle eth0:
Können Sie dann fügen Sie die
.split('.')[3]
Methode, um die variable zu Holen Sie sich die entsprechende Ausgabe, z.B.{{ ansible_default_ipv4.address.split('.')[3] }}
InformationsquelleAutor Willem van Ketwich
Dies ist ein ähnlicher Weg, um es zu bekommen:
InformationsquelleAutor joscas