Назад | Перейти на главную страницу

Как найти IP-адрес, назначенный каждому интерфейсу в Linux с помощью Ansible

Я работаю над написанием 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 }}"