diff --git a/host_vars/vm5/networking.yml b/host_vars/vm5/networking.yml index 5c52c51..5753321 100644 --- a/host_vars/vm5/networking.yml +++ b/host_vars/vm5/networking.yml @@ -1,10 +1,15 @@ --- interfaces: enp0s3: + type: void + br0: ipv4: 10.0.2.9 netmaskv4: 24 type: static + bridge: true gateway: 10.0.2.1 + interfaces: + - enp0s3 ipv4_forwarding: false ipv6_forwarding: false diff --git a/roles/networking/templates/ubuntu_00-installer-config.yaml.j2 b/roles/networking/templates/ubuntu_00-installer-config.yaml.j2 index 7a9c251..b971240 100644 --- a/roles/networking/templates/ubuntu_00-installer-config.yaml.j2 +++ b/roles/networking/templates/ubuntu_00-installer-config.yaml.j2 @@ -4,6 +4,7 @@ network: ethernets: {% for item in lookup('dict', interfaces, wantlist=True) %} {% if item.value.type not in ['wireguard', ] %} +{% if not ('bridge' in item.value and item.value.bridge) %} {{ item.key }}: {% if item.value.type == 'dhcp' %} dhcp4: true @@ -18,6 +19,45 @@ network: addresses: - 1.1.1.1 {# the nameservers are hardcoded for now #} +{% elif item.value.type in ['void', 'manual'] %} + dhcp4: false + dhcp6: false +{% endif %}{# end (type == *) #} +{% if 'routes' in item.value %}{# routes #} + routes: +{% for route in item.value.routes %} + - to: {{ route.subnet }}/{{ route.netmask }} + via: {{ route.gateway }} + metric: 100 +{% endfor %} +{% endif %}{# end routes #} +{% endif %}{# end not bridge #} +{% endif %}{# end (not in [wireguard, ]) #} +{% endfor %} +{% if (lookup('dict', interfaces, wantlist=True) | selectattr('value.bridge', 'defined') | selectattr('value.bridge') | list) %} + bridges: +{% for item in (lookup('dict', interfaces, wantlist=True) | selectattr('value.bridge', 'defined') | selectattr('value.bridge') | list) %} +{% if item.value.type not in ['wireguard', ] %} + {{ item.key }}: +{% if 'interfaces' in item.value and item.value.interfaces %} + interfaces: [ {{ item.value.interfaces | join(', ') }} ] +{% endif %} +{% if item.value.type == 'dhcp' %} + dhcp4: true +{% elif item.value.type == 'static' %} + dhcp4: false + addresses: + - {{ item.value.ipv4 }}/{{ item.value.netmaskv4 }} +{% if 'gateway' in item.value %} + gateway4: {{ item.value.gateway }} +{% endif %} + nameservers: + addresses: + - 1.1.1.1 +{# the nameservers are hardcoded for now #} +{% elif item.value.type in ['void', 'manual'] %} + dhcp4: false + dhcp6: false {% endif %}{# end (type == *) #} {% if 'routes' in item.value %}{# routes #} routes: @@ -29,4 +69,5 @@ network: {% endif %}{# end routes #} {% endif %}{# end (not in [wireguard, ]) #} {% endfor %} +{% endif %} version: 2