bundles/systemd-networkd: proper config
This commit is contained in:
parent
fbb4e2f7a5
commit
5e7c7671e0
3 changed files with 46 additions and 24 deletions
|
@ -1,3 +0,0 @@
|
||||||
auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
iface lo inet6 loopback
|
|
|
@ -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
|
|
||||||
|
|
||||||
% 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
|
%endif
|
||||||
|
|
|
@ -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',
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue