Я работаю над написанием playbook, который должен собирать базовую информацию о сервере перед выполнением любой задачи. Я хочу собрать имя интерфейса / IP-адрес / маску сети, назначенную каждому интерфейсу.
Пример - у меня два интерфейса - eth0 и eth1, и оба настроены с разными IP.
Я использую доступные факты для сбора этой информации. Он отлично работает с одним интерфейсом, но информация теряет порядок, если на машине больше интерфейсов. Я хочу пройтись по каждому интерфейсу и собрать эту информацию, но не могу привести ее в порядок.
Network_Info : Interface Name : {{ ansible_default_ipv4['alias'] }}
Network_Info : IP Address : {{ ansible_default_ipv4['address'] }}
Network_Info : Netmask : {{ ansible_default_ipv4['netmask']}}
Может кто-нибудь, пожалуйста, помогите мне с этим.
Спасибо камлеш
Попробуйте. В ansible_interfaces
факт содержит эту информацию.
tasks:
- name: debug interface facts
debug:
msg: "{{ hostvars[inventory_hostname]['ansible_%s' | format(item)] }}"
loop: "{{ ansible_interfaces }}"