{{ ansible_managed | comment }} 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 {% 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: {% 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(', ') }} ] {% else %} interfaces: [] {% 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: {% for route in item.value.routes %} - to: {{ route.subnet }}/{{ route.netmask }} via: {{ route.gateway }} metric: 100 {% endfor %} {% endif %}{# end routes #} {% endif %}{# end (not in [wireguard, ]) #} {% endfor %} {% endif %} version: 2