diff --git a/ansible/inventory/host_vars/hv00_balsillie_home/hv00_balsillie_house.yaml b/ansible/inventory/host_vars/hv00_balsillie_home/hv00_balsillie_house.yaml index 581a877..4aebf9c 100644 --- a/ansible/inventory/host_vars/hv00_balsillie_home/hv00_balsillie_house.yaml +++ b/ansible/inventory/host_vars/hv00_balsillie_home/hv00_balsillie_house.yaml @@ -11,26 +11,75 @@ systemd_networkd_configs: - name: 00-eth3.link src: ethernet.link.j2 mac_address: 00-00-00-00-00-00 - - name: br0.netdev + - name: 01-eth0.network + src: ethernet.network.j2 + mac_address: 00-00-00-00-00-00 + arp: false + lldp: true + dhcp: false + bridge: + name: br0 + vlans: + - 110 + - 210 + pvid: 210 + - name: 01-eth1.network + src: ethernet.network.j2 + mac_address: 00-00-00-00-00-00 + arp: false + lldp: true + dhcp: false + bridge: + name: br0 + vlans: + - 210 + pvid: 210 + - name: 01-eth2.network + src: ethernet.network.j2 + mac_address: 00-00-00-00-00-00 + arp: false + lldp: true + dhcp: false + bridge: + name: br0 + vlans: + - 30 + - 210 + - 220 + - 230 + - name: 01-eth3.network + src: ethernet.network.j2 + mac_address: 00-00-00-00-00-00 + arp: false + lldp: false + dhcp: false + - name: 10-br0.netdev src: bridge.netdev.j2 vlan_filtering: true stp: true - - name: br0.network + - name: 11-br0.network src: bridge.network.j2 - - name: vlan110.netdev + arp: false + dhcp: false + lldp: true + vlans: + - 110 + - name: 20-vlan110.netdev src: vlan.netdev.j2 - - name: vlan110.network + vlan_id: 110 + - name: 21-vlan110.network src: vlan.network.j2 + arp: true + lldp: true + dhcp: false address: - ipv4: 10.192.110.1/24 - ipv6: + ipv4: + - 10.192.110.1/24 gateway: ipv4: 10.192.110.254 - ipv6: nameserver: ipv4: - 10.192.110.254 - ipv6: + - 10.192.110.254 qemu_bridges: br0 diff --git a/ansible/playbooks/templates/bridge.netdev.j2 b/ansible/playbooks/templates/bridge.netdev.j2 index 96eb835..0cf1107 100644 --- a/ansible/playbooks/templates/bridge.netdev.j2 +++ b/ansible/playbooks/templates/bridge.netdev.j2 @@ -4,6 +4,6 @@ Kind=bridge [Bridge] DefaultPVID=none -VLANFiltering={{ item.vlan_filtering }} +VLANFiltering={{ item.vlan_filtering | default(false)}} VLANProtocol=802.1q -STP={{ item.stp }} \ No newline at end of file +STP={{ item.stp | default(false) }} \ No newline at end of file diff --git a/ansible/playbooks/templates/bridge.network.j2 b/ansible/playbooks/templates/bridge.network.j2 index 43718a5..f479207 100644 --- a/ansible/playbooks/templates/bridge.network.j2 +++ b/ansible/playbooks/templates/bridge.network.j2 @@ -1,11 +1,15 @@ [Match] -Name={{ item.name | regex_replace('^[0-9]*-', '') | regex_replace('\.netdev', '') }} +Name={{ item.name | regex_replace('^[0-9]*-', '') | regex_replace('\.network', '') }} [Link] -ARP={{ item.arp | default(false) }} +ARP={{ item.arp | default(true) }} [Network] -DHCP={{ item.dhcp | default(false) }} -LinkLocalAddressing=false -LLDP=true -VLAN={{ item.vlan }} \ No newline at end of file +DHCP={{ item.dhcp | default(true) }} +LinkLocalAddressing=False +LLDP={{ item.lldp | default(true) }} +{% if item.vlans is defined -%} +{% for vlan in item.vlans -%} +VLAN={{ item.vlan }} +{% endfor -%} +{% endif -%} \ No newline at end of file diff --git a/ansible/playbooks/templates/ethernet.network.j2 b/ansible/playbooks/templates/ethernet.network.j2 index 6132c8c..4137b4d 100644 --- a/ansible/playbooks/templates/ethernet.network.j2 +++ b/ansible/playbooks/templates/ethernet.network.j2 @@ -2,18 +2,72 @@ MACAddress={{ item.mac_address }} [Link] -ARP={{ item.arp }} +ARP={{ item.arp | default(true) }} [Network] DHCP={{ item.dhcp | default(true) }} -{% if item.bond %} +LinkLocalAddressing=False +LLDP={{ item.lldp | default(true) }} +{% if item.nameserver is defined and item.nameserver.ipv4 is defined -%} +{% for nameserver in item.nameserver.ipv4 -%} +DNS={{ nameserver }} +{% endfor -%} +{% endif -%} +{% if item.nameserver is defined and item.nameserver.ipv6 is defined -%} +{% for nameserver in item.nameserver.ipv6 -%} +DNS={{ nameserver }} +{% endfor -%} +{% endif -%} +{% if item.bond is defined -%} Bond={{ item.bond }} -{% endif %} -{% if item.bridge %} -Bridge={{ item.bridge }} -{% endif %} -{% if item.vlans %} -{% for vlan in item.vlans %} +{% endif -%} +{% if item.bridge is defined -%} +Bridge={{ item.bridge.name }} +{% endif -%} +{% if item.vlans is defined -%} +{% for vlan in item.vlans -%} VLAN={{ vlan }} -{% endfor %} -{% endif %} +{% endfor -%} +{% endif -%} + +{% if item.address is defined %} +[Address] +{% if item.address.ipv4 is defined -%} +{% for address in item.address.ipv4 -%} +Address={{ address }} +{% endfor -%} +{% endif -%} +{% if item.address.ipv6 is defined -%} +{% for address in item.address.ipv6 -%} +Address={{ address }} +{% endfor -%} +{% endif -%} +{% endif -%} + +{% if item.gateway is defined and item.gateway.ipv4 is defined %} +[Route] +Destination=0.0.0.0/0 +Gateway={{ item.gateway.ipv4 }} +Scope=global +Protocol=static +Type=unicast +{% endif -%} + +{% if item.gateway is defined and item.gateway.ipv6 is defined %} +[Route] +Destination=::/0 +Gateway={{ item.gateway.ipv6 }} +Protocol=static +Type=unicast +{% endif -%} + +{% if item.bridge is defined and item.bridge.vlans is defined %} +[BridgeVLANs] +{% for vlan in item.bridge.vlans -%} +VLAN={{ vlan }} +{% endfor -%} +{% if item.bridge.pvid is defined -%} +PVID={{ item.bridge.pvid }} +EgressUntagged={{ item.bridge.pvid }} +{% endif -%} +{% endif -%} \ No newline at end of file diff --git a/ansible/playbooks/templates/vlan.network.j2 b/ansible/playbooks/templates/vlan.network.j2 index 89b6a56..36334ac 100644 --- a/ansible/playbooks/templates/vlan.network.j2 +++ b/ansible/playbooks/templates/vlan.network.j2 @@ -1,33 +1,39 @@ [Match] -Name={{ item.name | regex_replace('^[0-9]*-', '') | regex_replace('\.netdev', '') }} +Name={{ item.name | regex_replace('^[0-9]*-', '') | regex_replace('\.network', '') }} [Link] -ARP={{ item.arp }} +ARP={{ item.arp | default(true) }} [Network] -{% if item.nameserver.ipv4 is defined -%} +DHCP={{ item.dhcp | default(true) }} +LinkLocalAddressing=False +LLDP={{ item.lldp | default(true) }} +{% if item.nameserver is defined and item.nameserver.ipv4 is defined -%} {% for nameserver in item.nameserver.ipv4 -%} DNS={{ nameserver }} {% endfor -%} {% endif -%} -{% if item.nameserver.ipv6 is defined -%} +{% if item.nameserver is defined and item.nameserver.ipv6 is defined -%} {% for nameserver in item.nameserver.ipv6 -%} DNS={{ nameserver }} {% endfor -%} {% endif -%} -{% if item.address.ipv4 is defined %} +{% if item.address is defined %} [Address] -Address={{ item.address.ipv4 }} +{% if item.address.ipv4 is defined -%} +{% for address in item.address.ipv4 -%} +Address={{ address }} +{% endfor -%} +{% endif -%} +{% if item.address.ipv6 is defined -%} +{% for address in item.address.ipv6 -%} +Address={{ address }} +{% endfor -%} +{% endif -%} {% endif -%} -{% if item.address.ipv6 is defined %} -[Address] -Address={{ item.address.ipv6 }} -{% endif -%} - - -{% if item.gateway.ipv4 is defined %} +{% if item.gateway is defined and item.gateway.ipv4 is defined %} [Route] Destination=0.0.0.0/0 Gateway={{ item.gateway.ipv4 }} @@ -36,7 +42,7 @@ Protocol=static Type=unicast {% endif -%} -{% if item.gateway.ipv6 is defined %} +{% if item.gateway is defined and item.gateway.ipv6 is defined %} [Route] Destination=::/0 Gateway={{ item.gateway.ipv6 }}