bundles/systemd-networkd: proper config

This commit is contained in:
Franzi 2020-11-09 14:48:19 +01:00
parent fbb4e2f7a5
commit 5e7c7671e0
Signed by: kunsi
GPG key ID: 12E3D2136B818350
3 changed files with 46 additions and 24 deletions

View file

@ -1,3 +0,0 @@
auto lo
iface lo inet loopback
iface lo inet6 loopback

View file

@ -1,6 +1,35 @@
<%
from ipaddress import ip_network
%>\
[Match] [Match]
Name=${interface} Name=${interface}
% for addr in sorted(config.get('ips', set())):
[Address]
<%
if '/' in addr:
ip, prefix = addr.split('/')
else:
ip = addr
prefix = '32'
%>\
Address=${ip}/${prefix}
% endfor
% if 'gateway4' in config:
[Route]
Gateway=${config['gateway4']}
GatewayOnLink=yes
% endif
% if 'gateway6' in config:
[Route]
Gateway=${config['gateway6']}
GatewayOnLink=yes
% endif
[Network] [Network]
% if config.get('dhcp', False): % if config.get('dhcp', False):
DHCP=yes DHCP=yes
@ -11,23 +40,6 @@ DHCP=no
IPv6AcceptRA=no IPv6AcceptRA=no
% endif % endif
% for addr in sorted(config.get('ip_addresses', set())): % if config.get('forwarding', False):
Address=${addr} IPForward=yes
% endfor
% if config.get('ip4_masquerade_outgoing', False):
IPMasquerade=yes
IPForward=ipv4
%endif %endif
% if 'ip6_gateway' in config:
[Route]
Gateway=${config['ip6_gateway']}
GatewayOnLink=yes
% endif
% if 'ip4_gateway' in config:
[Route]
Gateway=${config['ip4_gateway']}
GatewayOnLink=yes
% endif

View file

@ -1,10 +1,20 @@
assert node.has_bundle('systemd') assert node.has_bundle('systemd')
files = { files = {
'/etc/network/interfaces': {}, '/etc/network/interfaces': {
'delete': True,
},
} }
for interface, config in node.metadata.get('interfaces', {}).items(): directories = {
'/etc/systemd/network': {
'purge': True,
},
}
# Don't use .get() here. We might end up with a node without a network
# config!
for interface, config in node.metadata['interfaces'].items():
files['/etc/systemd/network/10-{}.network'.format(interface)] = { files['/etc/systemd/network/10-{}.network'.format(interface)] = {
'source': 'template.network', 'source': 'template.network',
'content_type': 'mako', 'content_type': 'mako',
@ -12,6 +22,9 @@ for interface, config in node.metadata.get('interfaces', {}).items():
'interface': interface, 'interface': interface,
'config': config, 'config': config,
}, },
'needed_by': {
'svc_systemd:systemd-networkd',
},
'triggers': { 'triggers': {
'svc_systemd:systemd-networkd:restart', 'svc_systemd:systemd-networkd:restart',
}, },