--- # Set state status for wireless interface - name: Set state status for wireless interface {{ outerItem.ssid }} ansible.builtin.set_fact: wireless_interface_state: "{{ outerItem.state | default('present') }}" # Override wifi devices - name: Override wifi add devices for {{ outerItem.ssid }} when: "'present' in wireless_interface_state" ansible.builtin.set_fact: wireless_devices_add: "{{ (wireless_interfaces_override | default() | selectattr('ssid', 'equalto', outerItem.ssid) | map(attribute='device') | list | first) | default(outerItem.device) }}" - name: Set wifi device del for {{ outerItem.ssid }} when: "'present' in wireless_interface_state" ansible.builtin.set_fact: wireless_devices_del: "{{ ansible_facts.openwrt_wireless | list | difference(wireless_devices_add) | default([]) }}" # - name: test # debug: # msg: "{{ outerItem }}" # loop: "{{ outerItem.device }}" # Delete wireless interface by name on all radios - name: Delete wireless interface {{ outerItem.ssid }} on all radios when: "'absent' in wireless_interface_state" uci: command: "absent" config: "wireless" type: "wifi-iface" find: ssid: "{{ outerItem.ssid }}" # Delete wireless interface - name: Delete wireless interface {{ outerItem.ssid }} on radio {{ item }} when: wireless_devices_del is defined and wireless_devices_del | length > 0 uci: command: "absent" config: "wireless" type: "wifi-iface" find: ssid: "{{ outerItem.ssid }}" device: "{{ item }}" loop: "{{ wireless_devices_del }}" # Create and configure wireless interface - name: Create and configure wireless interface when: "'present' in wireless_interface_state and wireless_devices_add | length > 0" block: # Generate mobility domain identifier - name: Generate mobility domain identifier ansible.builtin.command: cmd: "echo -n {{ item.ssid }} | md5sum | cut -c-4" uses_shell: true register: mobility_domain_identifier when: > (mobility_domain is defined and mobility_domain == 1) and (item.ssid is defined and item.ssid | length > 0) # Configure wireless interface - name: Configure wireless interface uci: command: "section" config: "wireless" type: "wifi-iface" find: device: "{{ item }}" ssid: "{{ outerItem.ssid }}" value: ifname: "{{ outerItem.ifname ~ ansible_loop.index0 | default(omit) }}" device: "{{ item | default(omit) }}" network: "{{ outerItem.network | default([]) | join(' ') }}" mode: "{{ outerItem.mode | default(omit) }}" disabled: "{{ outerItem.disabled | default(omit) }}" ssid: "{{ outerItem.ssid | default(omit) }}" mesh_id: "{{ outerItem.mesh_id | default(omit) }}" hidden: "{{ outerItem.hidden | default(omit) }}" isolate: "{{ outerItem.isolate | default(omit) }}" encryption: "{{ outerItem.encryption | default(omit) }}" key: "{{ outerItem.key | default(omit) }}" auth_server: "{{ outerItem.auth_server | default(omit) }}" auth_secret: "{{ outerItem.auth_secret | default(omit) }}" dynamic_vlan: "{{ outerItem.dynamic_vlan | default(omit) }}" vlan_tagged_interface: "{{ outerItem.vlan_tagged_interface | default(omit) }}" vlan_bridge: "{{ outerItem.vlan_bridge | default(omit) }}" vlan_naming: "{{ outerItem.vlan_naming | default(omit) }}" macfilter: "{{ outerItem.macfilter | default(omit) }}" maclist: "{{ outerItem.maclist | default([]) | join(' ') }}" ieee80211r: "{{ outerItem.ieee80211r | default(omit) }}" mobility_domain: "{{ mobility_domain_identifier.stdout | default(omit) }}" ft_over_ds: "{{ outerItem.ft_over_ds | default(omit) }}" ft_psk_generate_local: "{{ outerItem.ft_psk_generate_local | default(omit) }}" loop: "{{ wireless_devices_add }}" loop_control: extended: true