¿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: allfacts
y mostrar con- debug: var=allfacts
gather_facts
debe sertrue
para 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_ipv4
y keyaddress
y 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
ens3
oenp2s0
y esas cosas. Simplemente tiene mejores apuestas si usaansible_default_ipv4
y 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_ip
variable está vacíainventory_hostname
es 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
uri
módulo:Tu IP estará en
ip_response.content
fuente
https://ipecho.net/plain
Comando 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_host
no es la dirección IP del host en cuestión?ansible_default_ipv4.address
Puede 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_host
variablefuente