Compare commits

..

1 commit

Author SHA1 Message Date
7350b01403
wip 2025-06-22 10:57:27 +02:00
6 changed files with 74 additions and 65 deletions

View file

@ -1,3 +0,0 @@
# svc_systemd = {
# 'ifupdown.service': {},
# }

View file

@ -36,64 +36,61 @@ def dhcp(metadata):
'systemd/units',
)
def units(metadata):
if node.has_bundle('systemd-networkd'):
units = {}
units = {}
for network_name, network_conf in metadata.get('network').items():
interface_type = network_conf.get('type', None)
for network_name, network_conf in metadata.get('network').items():
interface_type = network_conf.get('type', None)
# network
# network
units[f'{network_name}.network'] = {
'Match': {
'Name': network_name if interface_type == 'vlan' else network_conf['interface'],
},
'Network': {
'DHCP': network_conf.get('dhcp', 'no'),
'IPv6AcceptRA': network_conf.get('dhcp', 'no'),
'VLAN': set(network_conf.get('vlans', set()))
}
}
# type
if interface_type:
units[f'{network_name}.network']['Match']['Type'] = interface_type
# ips
for i in [4, 6]:
if network_conf.get(f'ipv{i}', None):
units[f'{network_name}.network'].update({
f'Address#ipv{i}': {
'Address': network_conf[f'ipv{i}'],
},
})
if f'gateway{i}' in network_conf:
units[f'{network_name}.network'].update({
f'Route#ipv{i}': {
'Gateway': network_conf[f'gateway{i}'],
'GatewayOnlink': 'yes',
}
})
# as vlan
if interface_type == 'vlan':
units[f"{network_name}.netdev"] = {
'NetDev': {
'Name': network_name,
'Kind': 'vlan',
},
'VLAN': {
'Id': network_conf['id'],
}
}
return {
'systemd': {
'units': units,
units[f'{network_name}.network'] = {
'Match': {
'Name': network_name if interface_type == 'vlan' else network_conf['interface'],
},
'Network': {
'DHCP': network_conf.get('dhcp', 'no'),
'IPv6AcceptRA': network_conf.get('dhcp', 'no'),
'VLAN': set(network_conf.get('vlans', set()))
}
}
else:
return {}
# type
if interface_type:
units[f'{network_name}.network']['Match']['Type'] = interface_type
# ips
for i in [4, 6]:
if network_conf.get(f'ipv{i}', None):
units[f'{network_name}.network'].update({
f'Address#ipv{i}': {
'Address': network_conf[f'ipv{i}'],
},
})
if f'gateway{i}' in network_conf:
units[f'{network_name}.network'].update({
f'Route#ipv{i}': {
'Gateway': network_conf[f'gateway{i}'],
'GatewayOnlink': 'yes',
}
})
# as vlan
if interface_type == 'vlan':
units[f"{network_name}.netdev"] = {
'NetDev': {
'Name': network_name,
'Kind': 'vlan',
},
'VLAN': {
'Id': network_conf['id'],
}
}
return {
'systemd': {
'units': units,
}
}

View file

@ -13,7 +13,6 @@ defaults = {
'os-prober': {
'installed': False,
},
'dnsmasq-base': {},
},
'sources': {
'proxmox-ve': {

View file

@ -1,9 +1,6 @@
assert node.has_bundle('systemd')
files = {
'/etc/network/interfaces': {
'delete': True,
},
'/etc/resolv.conf': {
'content_type': 'mako',
},
@ -21,3 +18,9 @@ directories = {
svc_systemd = {
'systemd-networkd.service': {},
}
if not node.has_bundle('proxmox-ve'):
files['/etc/network/interfaces'] = {
'delete': True,
}

View file

@ -5,6 +5,5 @@
],
'bundles': [
'ifupdown',
'proxmox-ve',
],
}

View file

@ -3,7 +3,7 @@
'groups': [
'autologin',
'backup',
'debian-12-pve',
'debian-12',
'home',
'nextcloud',
'monitored',
@ -32,8 +32,10 @@
'systemd-swap',
'twitch-clip-download',
'raspberrymatic-cert',
#'tasmota-charge',
'wol-waker',
'zfs',
'proxmox-ve',
],
'metadata': {
'id': 'af96709e-b13f-4965-a588-ef2cd476437a',
@ -154,6 +156,18 @@
},
},
'systemd-swap': 4_000_000_000,
'tasmota-charge': {
'phone': {
'ip': '10.0.0.175',
'user': 'u0_a233',
'password': 'november',
},
'plug': {
'ip': '10.0.2.115',
'min': 45,
'max': 70,
},
},
'twitch-clip-download': {
'channel_name': 'cronekorkn_',
},