使用 Ansible 事实。获取接口未激活

Work with Ansible facts. Get interface not active

我需要为新接口配置 IP 地址。

为此,我想获取服务器上所有可用的接口,并找出哪个接口处于非活动状态。

我首先使用 ansible_interfaces 变量来发现存在哪些接口。这取决于现有接口(例如:eth0lo),我将通过 [=49 访问信息=]ansible_lo

我稍后需要做的是查看其每个接口的"active"参数,因此将具有该参数的接口的名称获取到"false"然后用它来修改一个文件。

示例: 一台服务器有 3 个接口 ens3 ens7loens7 是 incativa,我将用它来配置新的 IP 地址。我想要的是获取这个值 ens7 并保存在一个变量中以备后用。

如何使用 Ansible 执行此操作?

使用此 answer 作为参考,您可以执行以下任务:

  - set_fact:
      ansible_eth: "{% set ansible_eth = ansible_eth|default([]) + [hostvars[inventory_hostname]['ansible_' + item]] %}{{ ansible_eth|list }}"
    when: hostvars[inventory_hostname]['ansible_' + item]['type'] == 'ether' and hostvars[inventory_hostname]['ansible_' + item]['active'] == false
    with_items:
      - "{{ hostvars[inventory_hostname]['ansible_interfaces'] }}"

  - debug:
      msg: "Free device: {{ item.device }}"
    with_items: "{{ ansible_eth }}"


这将 select 个非活动的以太卡。