You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何获取Windows主机Ethernet网卡MAC地址并存入变量

问题解答

1. ansible_interfaces的类型判断

ansible_interfaces是数组(列表)类型,JSON中以[]包裹的有序元素集合就是数组,它的每一个元素是存储单块网卡全部属性信息的字典。

2. 提取指定网卡MAC地址到自定义变量的方法

你可以直接用Ansible内置过滤器实现筛选赋值,以下是两种常用可行方案:

方法1:selectattr过滤器(无额外依赖,推荐)

不需要安装额外工具,直接在playbook中通过set_fact赋值即可:

- name: 提取Ethernet网卡MAC地址到自定义变量
  ansible.builtin.set_fact:
    ethernet_mac: "{{ ansible_interfaces | selectattr('connection_name', 'equalto', 'Ethernet') | map(attribute='macaddress') | first }}"

赋值完成后可直接通过{{ ethernet_mac }}调用对应MAC值,本次示例中该变量最终取值为A4:AE:11:1C:D5:7F。

方法2:json_query过滤器(适合复杂筛选场景)

如果后续有更复杂的多条件筛选需求可以使用该方案,需要先在Ansible控制节点安装依赖库pip install jmespath:

- name: 提取Ethernet网卡MAC地址到自定义变量
  ansible.builtin.set_fact:
    ethernet_mac: "{{ ansible_interfaces | json_query('[?connection_name==`Ethernet`].macaddress') | first }}"

结果验证

可以新增debug任务确认变量取值是否正确:

- name: 打印获取到的Ethernet网卡MAC地址
  ansible.builtin.debug:
    var: ethernet_mac

内容的提问来源于stack exchange,提问作者hurr1k4ne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:45:03