使用 Ansible 事实。获取接口未激活
Work with Ansible facts. Get interface not active
我需要为新接口配置 IP 地址。
为此,我想获取服务器上所有可用的接口,并找出哪个接口处于非活动状态。
我首先使用 ansible_interfaces 变量来发现存在哪些接口。这取决于现有接口(例如:eth0 和 lo),我将通过 [=49 访问信息=] 和 ansible_lo
我稍后需要做的是查看其每个接口的"active"参数,因此将具有该参数的接口的名称获取到"false"然后用它来修改一个文件。
示例:
一台服务器有 3 个接口 ens3 ens7 和 lo。 ens7 是 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 个非活动的以太卡。
我需要为新接口配置 IP 地址。
为此,我想获取服务器上所有可用的接口,并找出哪个接口处于非活动状态。
我首先使用 ansible_interfaces 变量来发现存在哪些接口。这取决于现有接口(例如:eth0 和 lo),我将通过 [=49 访问信息=] 和 ansible_lo
我稍后需要做的是查看其每个接口的"active"参数,因此将具有该参数的接口的名称获取到"false"然后用它来修改一个文件。
示例: 一台服务器有 3 个接口 ens3 ens7 和 lo。 ens7 是 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 个非活动的以太卡。