Como você obtém o endereço IP do host atual em uma função?
Sei que você pode obter a lista de grupos dos quais o host é membro e o nome do host do host, mas não consigo encontrar uma solução para obter o endereço IP.
Você pode obter o nome do host usando {{inventory_hostname}}
e o grupo usando{{group_names}}
Eu tentei coisas como {{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}
eip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"
setup:
módulo comregister: allfacts
e exiba com- debug: var=allfacts
gather_facts
deve sertrue
para que isso funcione. é verdadeiro por padrão, mas pode ser alterado para falso se as informações sobre os hosts não forem necessárias.Você pode obter o endereço IP de
hostvars
, dictansible_default_ipv4
e keyaddress
e endereço IPv6 respectivamente
Um exemplo de manual:
fonte
Você pode usar em seu template.j2
{{ ansible_eth0.ipv4.address }}
da mesma maneira que usa{{inventory_hostname}}
.ps: Consulte a seguinte postagem do blog para obter mais informações sobre COMO COLETAR INFORMAÇÕES SOBRE HOSTS REMOTOS COM FATOS DE COLETA ANSÍVEIS .
'esperando que ajude alguém um dia ッ
fonte
ens3
ouenp2s0
e essas coisas. Você só tem apostas melhores se usaransible_default_ipv4
e se não estiver funcionando, então volte procurando por alguns padrões sensatos.Se você deseja o IP público externo e está em um ambiente de nuvem como AWS ou Azure, pode usar o módulo ipify_facts :
Isso colocará o IP público na variável
ipify_public_ip
.fonte
ipify_public_ip
variável está vaziainventory_hostname
é tudo o que está definido no inventário. Pode ser um nome de host conforme definido em.ssh/config
.Outra maneira de encontrar IP público seria usar o
uri
módulo:Seu IP estará em
ip_response.content
fonte
https://ipecho.net/plain
Comando de depuração simples:
resultado:
obter o endereço IP do host:
fonte
http://docs.ansible.com/ansible/latest/plugins/lookup/dig.html
então no modelo, por exemplo:
Notas:
Mas ainda assim atende a 99% (falando figurativamente) dos casos de uso.
fonte
ansible_host
não for o endereço IP do host em questão?Simples
ansible_default_ipv4.address
pode não ser o que você pensa em alguns casos , use:fonte
O seguinte snippet retornará o ip público da máquina remota e também o ip padrão (ou seja: LAN)
Isso imprimirá ips entre aspas também para evitar confusão no uso de arquivos de configuração.
fonte
Basta usar
ansible_ssh_host
variávelfonte