Задача — в 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 инстанса, а во втором — на приватный.
У остальных имён есть только приватные адреса.
Готово.