Wie erhalten Sie die IP-Adresse des aktuellen Hosts in einer Rolle?
Ich weiß, dass Sie die Liste der Gruppen, zu denen der Host gehört, und den Hostnamen des Hosts abrufen können, aber ich kann keine Lösung finden, um die IP-Adresse abzurufen.
Sie können den Hostnamen mithilfe von {{inventory_hostname}}
und die Gruppe mithilfe von abrufen{{group_names}}
Ich habe Dinge wie {{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}
und ausprobiertip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"
setup:
Modul ausführen mitregister: allfacts
und anzeigen mit- debug: var=allfacts
gather_facts
muss sein,true
damit dies funktioniert. Es ist standardmäßig wahr, aber man kann es auf falsch setzen, wenn die Informationen über die Hosts nicht benötigt werden.Sie können die IP-Adresse von
hostvars
, dictansible_default_ipv4
und key erhaltenaddress
bzw. IPv6-Adresse
Ein Beispiel für ein Spielbuch:
quelle
Sie können in Ihrer template.j2
{{ ansible_eth0.ipv4.address }}
genauso verwenden, wie Sie es verwenden{{inventory_hostname}}
.ps: Weitere Informationen zum Sammeln von Informationen zu Fernbedienungshosts mit glaubwürdigen GATHERS-FAKTEN finden Sie im folgenden Blogpost .
Ich hoffe, es wird eines Tages jemandem helfen
quelle
ens3
oderenp2s0
und solche Dinge. Sie haben einfach bessere Wetten, wenn Sie verwendenansible_default_ipv4
und wenn es nicht funktioniert, dann wechseln Sie zurück und suchen Sie nach vernünftigen Standardeinstellungen.Wenn Sie die externe öffentliche IP- Adresse möchten und sich in einer Cloud-Umgebung wie AWS oder Azure befinden, können Sie das Modul ipify_facts verwenden :
Dadurch wird die öffentliche IP in die Variable eingefügt
ipify_public_ip
.quelle
ipify_public_ip
Variable leerinventory_hostname
ist was auch immer im Inventar eingestellt ist. Es könnte ein Hostname sein, wie in festgelegt.ssh/config
.Eine andere Möglichkeit, öffentliche IP zu finden, wäre die Verwendung des
uri
Moduls:Ihre IP wird in sein
ip_response.content
quelle
https://ipecho.net/plain
Einfacher Debug-Befehl:
Ausgabe:
Host-IP-Adresse abrufen:
quelle
http://docs.ansible.com/ansible/latest/plugins/lookup/dig.html
so in Vorlage, zum Beispiel:
Anmerkungen:
Dennoch dient es 99% (im übertragenen Sinne) der Anwendungsfälle.
quelle
ansible_host
nicht die IP-Adresse des betreffenden Hosts ist?ansible_default_ipv4.address
In einigen Fällen ist Plain möglicherweise nicht das, was Sie denken . Verwenden Sie:quelle
Das folgende Snippet gibt die öffentliche IP-Adresse des Remote-Computers sowie die Standard-IP-Adresse (dh LAN) zurück.
Dadurch werden IPs in Anführungszeichen gedruckt, um Verwirrung bei der Verwendung von Konfigurationsdateien zu vermeiden.
quelle
Verwenden Sie einfach eine
ansible_ssh_host
Variablequelle