27 lines
		
	
	
	
		
			762 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			762 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from ipaddress import ip_network, ip_interface
 | 
						|
 | 
						|
 | 
						|
@metadata_reactor.provides(
 | 
						|
    'systemd/units',
 | 
						|
)
 | 
						|
def network(metadata):
 | 
						|
    interface = ip_interface(metadata.get('network/internal/ipv4'))
 | 
						|
    network = ip_interface(f'{interface.ip}/24').network
 | 
						|
    gateway = network[1]
 | 
						|
    
 | 
						|
    return {
 | 
						|
        'systemd': {
 | 
						|
            'units': {
 | 
						|
                'internal.network': {
 | 
						|
                    f'Route#hetzner_gateway': {
 | 
						|
                        'Destination': str(gateway),
 | 
						|
                        'Scope': 'link',
 | 
						|
                    },
 | 
						|
                    f'Route#hetzner_network': {
 | 
						|
                        'Destination': str(network),
 | 
						|
                        'Gateway': str(gateway),
 | 
						|
                    },
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 |