Execution
Date 22 Jul 2025 10:51:18 +0100
Duration 00:00:00.46
Controller ssh-gw-4.layershift.com
User root
Versions
Ansible 2.16.11
ara 1.7.2 / 1.7.2
Python 3.10.10
Summary
1 Hosts
1 Tasks
1 Results
1 Plays
1 Files
0 Records

File: /home/ssh-gateway/ansible/kuly/get_mac_addresses.yaml

---
- name: Get MAC address of primary physical network interface
  hosts: all
  gather_facts: true
  tasks:

    - name: Filter physical interfaces
      set_fact:
        physical_interfaces: >-
          {{
            ansible_interfaces
            | select('match', '^(eth|eno|ens|em)[0-9]+$')
            | list
          }}

    - name: Look for valid physical interface with MAC
      set_fact:
        primary_mac_data: >-
          {{
            mac_result.results
            | selectattr('ansible_facts.primary_mac', 'defined')
            | list
            | first
          }}
      vars:
        mac_result: "{{ lookup('vars', 'mac_loop_result') }}"

    - name: Set primary interface and MAC globally
      set_fact:
        primary_physical_iface: "{{ primary_mac_data.ansible_facts.primary_physical_iface }}"
        primary_mac: "{{ primary_mac_data.ansible_facts.primary_mac }}"
      when: primary_mac_data is defined

    - name: Show MAC address
      debug:
        msg: >-
          MAC address of primary physical interface ({{ primary_physical_iface }}):
          {{ primary_mac }}

  pre_tasks:
    - name: Loop through interfaces to find MACs
      set_fact:
        primary_physical_iface: "{{ item }}"
        primary_mac: "{{ ansible_facts['ansible_' + item]['macaddress'] }}"
      loop: "{{ physical_interfaces }}"
      when: "'ansible_' + item in ansible_facts and ansible_facts['ansible_' + item]['macaddress'] is defined"
      register: mac_loop_result