如何使用 Ansible 查找分配给 Linux 上每个接口的 IP 地址

如何使用 Ansible 查找分配给 Linux 上每个接口的 IP 地址

我正在编写剧本,它应该在执行任何任务之前收集基本的服务器信息,我想收集分配给每个接口的接口名称/IP 地址/网络掩码。

例如 - 我有两个接口 - eth0 和 eth1,并且都配置了不同的 IP。

我使用 ansible facts 来收集这些信息,它在单个接口下工作正常,但如果一台机器上有更多接口,信息就会失去顺序。我想循环遍历每个接口并收集这些信息,但无法按顺序排列。

  Network_Info : Interface Name : {{ ansible_default_ipv4['alias'] }}
  Network_Info : IP Address     : {{ ansible_default_ipv4['address'] }}
  Network_Info : Netmask        : {{ ansible_default_ipv4['netmask']}}

有人可以帮我吗?

谢谢 Kamlesh

答案1

尝试一下。ansible_interfaces事实包含此信息。

tasks:
  - name: debug interface facts
    debug:
      msg: "{{ hostvars[inventory_hostname]['ansible_%s' | format(item)] }}"
    loop: "{{ ansible_interfaces }}"

相关内容