¿Cómo se obtiene la dirección IP del host actual en un rol?
Sé que puede obtener la lista de grupos de los que el host es miembro y el nombre de host del host, pero no puedo encontrar una solución para obtener la dirección IP.
Puede obtener el nombre de host usando {{inventory_hostname}}y el grupo usando{{group_names}}
He probado cosas como {{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}
yip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"

setup:módulo conregister: allfactsy mostrar con- debug: var=allfactsgather_factsdebe sertruepara que esto funcione. es verdadero de forma predeterminada, pero se puede convertir en falso si no se requiere la información sobre los hosts.Puede obtener la dirección IP de
hostvars, dictansible_default_ipv4y keyaddressy dirección IPv6 respectivamente
Un ejemplo de libro de jugadas:
fuente
Puede usar en su template.j2 de
{{ ansible_eth0.ipv4.address }}la misma manera que usa{{inventory_hostname}}.ps: consulte la siguiente publicación de blog para obtener más información sobre CÓMO RECOPILAR INFORMACIÓN SOBRE HOSTS REMOTOS CON HECHOS ANSIBLES GATHERS .
'esperando que algún día ayude a alguien ッ
fuente
ens3oenp2s0y esas cosas. Simplemente tiene mejores apuestas si usaansible_default_ipv4y si no funciona, vuelva a buscar algunos valores predeterminados cuerdos.Si desea la IP pública externa y se encuentra en un entorno de nube como AWS o Azure, puede usar el módulo ipify_facts :
Esto colocará la IP pública en la variable
ipify_public_ip.fuente
ipify_public_ipvariable está vacíainventory_hostnamees lo que se establece en el inventario. Podría ser un nombre de host como se establece en.ssh/config.Otra forma de encontrar IP pública sería usar el
urimódulo:Tu IP estará en
ip_response.contentfuente
https://ipecho.net/plainComando de depuración simple:
salida:
obtener la dirección IP del host:
fuente
http://docs.ansible.com/ansible/latest/plugins/lookup/dig.html
así que en la plantilla, por ejemplo:
Notas:
Pero aún sirve al 99% (en sentido figurado) de los casos de uso.
fuente
ansible_hostno es la dirección IP del host en cuestión?ansible_default_ipv4.addressPuede que simple no sea lo que piensas en algunos casos , usa:fuente
El siguiente fragmento devolverá la IP pública de la máquina remota y también la IP predeterminada (es decir: LAN)
Esto también imprimirá las direcciones IP entre comillas para evitar confusiones al usar archivos de configuración.
fuente
Solo usa
ansible_ssh_hostvariablefuente