Как получить текущий IP-адрес хоста в роли?
Я знаю, что вы можете получить список групп, членом которых является хост, и имя хоста, но я не могу найти решение для получения IP-адреса.
Вы можете получить имя хоста, используя {{inventory_hostname}}
и группу, используя{{group_names}}
Я пробовал такие вещи, как {{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}
иip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"
setup:
модуль с помощьюregister: allfacts
и отображать с помощью- debug: var=allfacts
gather_facts
должно быть,true
чтобы это работало. по умолчанию оно истинно, но можно изменить его на ложь, если информация о хостах не требуется.Вы можете получить IP-адрес
hostvars
, dictansible_default_ipv4
и keyaddress
и IPv6-адрес соответственно
Пример сценария:
источник
Вы можете использовать в своем template.j2 так
{{ ansible_eth0.ipv4.address }}
же, как и{{inventory_hostname}}
.ps: Пожалуйста, обратитесь к следующему сообщению в блоге, чтобы получить дополнительную информацию о том, КАК СОБИРАТЬ ИНФОРМАЦИЮ ОБ УДАЛЕННЫХ ХОЗЯЙКАХ С ДОСТУПНЫМИ ФАКТАМИ О GATHERS .
'Надеюсь, однажды это кому-то поможет ッ
источник
ens3
илиenp2s0
и тому подобное. У вас просто лучшие ставки, если вы используете,ansible_default_ipv4
и если он не работает, тогда переключитесь обратно в поисках разумных значений по умолчанию.Если вам нужен внешний общедоступный IP-адрес и вы находитесь в облачной среде, такой как AWS или Azure, вы можете использовать модуль ipify_facts :
Это поместит публичный IP в переменную
ipify_public_ip
.источник
ipify_public_ip
переменная пустаinventory_hostname
это то, что установлено в инвентаре. Это может быть заданное имя хоста.ssh/config
.Другой способ найти общедоступный IP-адрес - использовать
uri
модуль:Ваш IP будет в
ip_response.content
источник
https://ipecho.net/plain
Простая команда отладки:
вывод:
получить IP-адрес хоста:
источник
http://docs.ansible.com/ansible/latest/plugins/lookup/dig.html
так в шаблоне, например:
Ноты:
Но все же он обслуживает 99% (образно говоря) вариантов использования.
источник
ansible_host
речь идет не об IP-адресе хоста?В некоторых случаях простой
ansible_default_ipv4.address
может быть не тем, что вы думаете , используйте:источник
Следующий фрагмент вернет общедоступный IP-адрес удаленного компьютера, а также IP-адрес по умолчанию (например, LAN)
Это также напечатает ip в кавычках, чтобы избежать путаницы при использовании файлов конфигурации.
источник
Просто используйте
ansible_ssh_host
переменнуюисточник