bundles/wireguard: health checks for everyone
This commit is contained in:
parent
15eaa94397
commit
4f260932c3
5 changed files with 45 additions and 22 deletions
|
@ -13,7 +13,6 @@ deps = set()
|
||||||
if node.has_bundle('apt'):
|
if node.has_bundle('apt'):
|
||||||
deps.add('pkg_apt:wireguard')
|
deps.add('pkg_apt:wireguard')
|
||||||
|
|
||||||
health_checks = {}
|
|
||||||
for peer, config in sorted(node.metadata.get('wireguard/peers', {}).items()):
|
for peer, config in sorted(node.metadata.get('wireguard/peers', {}).items()):
|
||||||
files[f'/etc/systemd/network/wg_{config["iface"]}.netdev'] = {
|
files[f'/etc/systemd/network/wg_{config["iface"]}.netdev'] = {
|
||||||
'content_type': 'mako',
|
'content_type': 'mako',
|
||||||
|
@ -35,20 +34,13 @@ for peer, config in sorted(node.metadata.get('wireguard/peers', {}).items()):
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.get('health_check', False):
|
files['/usr/local/bin/wg_health_check'] = {
|
||||||
health_checks[peer] = config['their_ip']
|
|
||||||
|
|
||||||
if health_checks:
|
|
||||||
files['/usr/local/bin/wg_health_check'] = {
|
|
||||||
'content_type': 'mako',
|
'content_type': 'mako',
|
||||||
'context': {
|
'context': {
|
||||||
'peers': health_checks,
|
'peers': node.metadata.get('wireguard/health_checks'),
|
||||||
},
|
},
|
||||||
'mode': '0755',
|
'mode': '0755',
|
||||||
}
|
}
|
||||||
files['/etc/cron.d/wg_health_check'] = {
|
|
||||||
'content': '* * * * * root /usr/local/bin/wg_health_check | logger -t wg_health_check\n',
|
|
||||||
}
|
|
||||||
|
|
||||||
if node.has_bundle('pppd'):
|
if node.has_bundle('pppd'):
|
||||||
files['/etc/ppp/ip-up.d/reconnect-wireguard'] = {
|
files['/etc/ppp/ip-up.d/reconnect-wireguard'] = {
|
||||||
|
|
|
@ -244,3 +244,37 @@ def snat(metadata):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@metadata_reactor.provides(
|
||||||
|
'wireguard/health_checks',
|
||||||
|
'systemd-timers/timers/wg-health-check',
|
||||||
|
)
|
||||||
|
def health_checks(metadata):
|
||||||
|
checks = {}
|
||||||
|
|
||||||
|
for peer, config in metadata.get('wireguard/peers', {}).items():
|
||||||
|
if (
|
||||||
|
config.get('exclude_from_monitoring', False)
|
||||||
|
or 'endpoint' not in config
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
|
||||||
|
checks[peer] = config['their_ip']
|
||||||
|
|
||||||
|
if not checks:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
return {
|
||||||
|
'systemd-timers': {
|
||||||
|
'timers': {
|
||||||
|
'wg-health-check': {
|
||||||
|
'command': '/usr/local/bin/wg_health_check',
|
||||||
|
'when': 'minutely',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'wireguard': {
|
||||||
|
'health_checks': checks,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
@ -134,11 +134,12 @@ nodes['fkusei-locutus'] = {
|
||||||
'privatekey': vault.decrypt('smedia$NotViaThisRepository'),
|
'privatekey': vault.decrypt('smedia$NotViaThisRepository'),
|
||||||
'peers': {
|
'peers': {
|
||||||
'smedia': {
|
'smedia': {
|
||||||
|
'endpoint': '185.122.180.82:51820',
|
||||||
'my_ip': '10.200.128.2/20',
|
'my_ip': '10.200.128.2/20',
|
||||||
'my_port': 51820,
|
'my_port': 51820,
|
||||||
'endpoint': '185.122.180.82:51820',
|
|
||||||
'psk': vault.decrypt('smedia$NotViaThisRepository'),
|
'psk': vault.decrypt('smedia$NotViaThisRepository'),
|
||||||
'pubkey': vault.decrypt('smedia$NotViaThisRepository'),
|
'pubkey': vault.decrypt('smedia$NotViaThisRepository'),
|
||||||
|
'their_ip': '10.200.128.1',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -163,9 +163,7 @@ nodes['home.router'] = {
|
||||||
'external_hostname': 'franzi-home.kunbox.net', # Set via DynDNS
|
'external_hostname': 'franzi-home.kunbox.net', # Set via DynDNS
|
||||||
'snat_ip': '172.19.138.1',
|
'snat_ip': '172.19.138.1',
|
||||||
'peers': {
|
'peers': {
|
||||||
'ovh.wireguard': {
|
'ovh.wireguard': {},
|
||||||
'health_check': True,
|
|
||||||
},
|
|
||||||
'icinga2': {},
|
'icinga2': {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -35,9 +35,7 @@ nodes['ovh.wireguard'] = {
|
||||||
'wireguard': {
|
'wireguard': {
|
||||||
'peers': {
|
'peers': {
|
||||||
'ovh.icinga2': {},
|
'ovh.icinga2': {},
|
||||||
'home.router': {
|
'home.router': {},
|
||||||
'health_check': True,
|
|
||||||
},
|
|
||||||
'htz-cloud.wireguard': {},
|
'htz-cloud.wireguard': {},
|
||||||
'kunsi-oneplus3': {
|
'kunsi-oneplus3': {
|
||||||
'their_ip': '172.19.136.65',
|
'their_ip': '172.19.136.65',
|
||||||
|
|
Loading…
Reference in a new issue