Initial commit
This commit is contained in:
93
roles/wireless/tasks/interface.yml
Normal file
93
roles/wireless/tasks/interface.yml
Normal file
@@ -0,0 +1,93 @@
|
||||
---
|
||||
# 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
|
||||
Reference in New Issue
Block a user