Um die „Haupt“ IP Adresse eines Systems zu bekommen wird in ansible häufig die Variable: ansible_default_ipv4
benutzt.
Das Problem, dass hierbei entstehen kann, ist dass diese Variable von dem Interface ausgeht, für welches die default route konfiguriert ist. Hat ein Server keine default route, ist die Variable leer.
Es gibt jedoch eine sicherer Möglichkeit um trotzdem die IP zu bekommen.
George Shuklin hat in seinem Blog Eintrag ansible_default_ipv4 is not what you think einen Tipp aufgezeigt.
Dazu nimmt man einfach:
ansible_default_ipv4.address|default(ansible_all_ipv4_addresses[0])
Das heisst, falls ansible_default_ipv4
leer ist, wird der Wert der erste IP Adresse genommen, welche gefunden wird.
Eine andere Möglichkeit ist auch die IP zu nehmen mit der man sich auf dem ansible control host via SSH verbunden hat:
- hosts: all
gather_facts: yes
tasks:
- debug: var=hostvars[inventory_hostname]['ansible_env'].SSH_CONNECTION.split(' ')[2]
Danke an middlewareinventory.com für diesen Tipp.