Comment obtenir l'adresse IP de l'hôte actuel dans un rôle?
Je sais que vous pouvez obtenir la liste des groupes dont l'hôte est membre et le nom d'hôte de l'hôte, mais je ne parviens pas à trouver une solution pour obtenir l'adresse IP.
Vous pouvez obtenir le nom d'hôte en utilisant {{inventory_hostname}}
et le groupe en utilisant{{group_names}}
J'ai essayé des choses comme {{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}
etip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"
setup:
module avecregister: allfacts
et afficher avec- debug: var=allfacts
gather_facts
doit êtretrue
pour que cela fonctionne. c'est vrai par défaut mais on peut le transformer en faux si les informations sur les hôtes ne sont pas requises.Vous pouvez obtenir l'adresse IP de
hostvars
, dictansible_default_ipv4
et cléaddress
et adresse IPv6 respectivement
Un exemple de playbook:
la source
Vous pouvez utiliser dans votre template.j2 de
{{ ansible_eth0.ipv4.address }}
la même manière que vous utilisez{{inventory_hostname}}
.ps: Veuillez vous référer au blog suivant pour avoir plus d'informations sur COMMENT COLLECTER DES INFORMATIONS SUR LES HÔTES À DISTANCE AVEC DES FAITS ANSIBLE GATHERS .
'en espérant que ça aidera quelqu'un un jour ッ
la source
ens3
ouenp2s0
et de telles choses. Vous avez juste de meilleurs paris si vous utilisezansible_default_ipv4
et si cela ne fonctionne pas, puis revenez à la recherche de valeurs par défaut saines.Si vous voulez l' adresse IP publique externe et que vous êtes dans un environnement cloud comme AWS ou Azure, vous pouvez utiliser le module ipify_facts :
Cela placera l'adresse IP publique dans la variable
ipify_public_ip
.la source
ipify_public_ip
variable is emptyinventory_hostname
est ce qui est défini dans l'inventaire. Il peut s'agir d'un nom d'hôte tel que défini dans.ssh/config
.Une autre façon de trouver une adresse IP publique serait d'utiliser le
uri
module:Votre adresse IP sera en
ip_response.content
la source
https://ipecho.net/plain
Commande de débogage simple:
production:
obtenir l'adresse IP de l'hôte:
la source
http://docs.ansible.com/ansible/latest/plugins/lookup/dig.html
donc dans le modèle, par exemple:
Remarques:
Mais il sert toujours 99% (au sens figuré) des cas d'utilisation.
la source
ansible_host
n'est pas l'adresse IP de l'hôte en question?Plain
ansible_default_ipv4.address
peut ne pas être ce que vous pensez dans certains cas , utilisez:la source
L'extrait de code suivant renverra l'IP publique de la machine distante ainsi que l'IP par défaut (c'est-à-dire: LAN)
Cela imprimera également les adresses IP entre guillemets pour éviter toute confusion lors de l'utilisation des fichiers de configuration.
la source
Utilisez simplement la
ansible_ssh_host
variablela source