Задача – в Ansible получить IP адрес хоста, на котором выполняется задача.
Есть два варианта (может и больше), ниже – примеры с обоими.
Содержание
Вариант 1 – hostvars
См. документацию тут>>>.
Добавим тестовую задачу:
- name: Test hosts list debug: msg: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}"
Запускаем:
[simterm]
... TASK [test : Test hosts list] **** ok: [dev.backend-app1-internal.example.com] => { "msg": "10.0.2.71" } ok: [dev.backend-app2-internal.example.com] => { "msg": "10.0.2.91" } ok: [dev.backend-console-internal.example.com] => { "msg": "10.0.2.104" } ok: [dev.backend-bastion.example.com] => { "msg": "10.0.2.126" } ...
[/simterm]
Вариант 2 – lookup
и dig
Второй вариант – с помощью lookup
и его плагина dig
.
См. документацию тут>>>.
Пример:
... - name: Test hosts list debug: msg: "{{ lookup('dig', ansible_host) }}" ...
Запускаем:
[simterm]
... TASK [test : Test hosts list] **** ok: [dev.backend-app1-internal.example.com] => { "msg": "10.0.2.71" } ok: [dev.backend-app2-internal.example.com] => { "msg": "10.0.2.91" } ok: [dev.backend-bastion.example.com] => { "msg": "18.***.***.67" } ok: [dev.backend-console-internal.example.com] => { "msg": "10.0.2.104" } ...
[/simterm]
Единственное, на что стоит обратить внимание – dev.backend-bastion.example.com в первом случае резолвится на публичный IP EC2 инстанса, а во втором – на приватный.
У остальных имён есть только приватные адреса.
Готово.