51 lines
1.8 KiB
YAML
51 lines
1.8 KiB
YAML
---
|
|
# Set state status for network interface
|
|
- name: Set state status for network interface {{ item.id }}
|
|
ansible.builtin.set_fact:
|
|
network_interface_state: "{{ item.state | default('present') }}"
|
|
|
|
# Delete network interface
|
|
- name: Delete network interface {{ item.id }}
|
|
when: "'absent' in network_interface_state"
|
|
uci:
|
|
command: "absent"
|
|
config: "network"
|
|
section: "{{ item.id }}"
|
|
type: "interface"
|
|
|
|
# Create and configure network interface
|
|
- name: Create and configure network interface
|
|
when: "'present' in network_interface_state"
|
|
block:
|
|
# Create network interface
|
|
- name: Create network interface {{ item.id }}
|
|
uci:
|
|
command: "add"
|
|
config: "network"
|
|
section: "{{ item.id }}"
|
|
type: "interface"
|
|
|
|
# Configure network interface
|
|
- name: Configure network interface {{ item.id }}
|
|
uci:
|
|
command: "set"
|
|
config: "network"
|
|
section: "{{ item.id }}"
|
|
type: "interface"
|
|
value:
|
|
device: "{{ item.device | default(omit) }}"
|
|
proto: "{{ item.proto | default(omit) }}"
|
|
auto: "{{ item.auto | default(omit) }}"
|
|
force_link: "{{ item.force_link | default(omit) }}"
|
|
ipaddr: "{{ item.ipaddr | default(omit) }}"
|
|
netmask: "{{ item.netmask | default(omit) }}"
|
|
gateway: "{{ item.gateway | default(omit) }}"
|
|
peerdns: "{{ item.peerdns | default(omit) }}"
|
|
dns: "{{ item.dns | default([]) | join(' ') }}"
|
|
username: "{{ item.username | default(omit) }}"
|
|
password: "{{ item.password | default(omit) }}"
|
|
mtu: "{{ item.mtu | default(omit) }}"
|
|
ipv6: "{{ item.ipv6 | default(omit) }}"
|
|
delegate: "{{ item.delegate | default(omit) }}"
|
|
ip6assign: "{{ item.ip6assign | default(omit) }}"
|