diff --git a/bundles/hetzner-dyndns/items.py b/bundles/hetzner-dyndns/items.py new file mode 100644 index 0000000..d278949 --- /dev/null +++ b/bundles/hetzner-dyndns/items.py @@ -0,0 +1,6 @@ +directories['/opt/hetzner-dyndns/src'] = {} + +git_deploy['/opt/hetzner-dyndns/src'] = { + 'repo': 'https://git.franzi.business/sophie/hetzner-dyndns.git', + 'rev': 'main', +} diff --git a/bundles/hetzner-dyndns/metadata.py b/bundles/hetzner-dyndns/metadata.py new file mode 100644 index 0000000..a5369f6 --- /dev/null +++ b/bundles/hetzner-dyndns/metadata.py @@ -0,0 +1,26 @@ +defaults = { + 'systemd-timers': { + 'timers': { + 'hetzner-dyndns-update': { + 'when': 'hourly', + }, + }, + }, +} + + +@metadata_reactor.provides( + 'systemd-timers/timers/hetzner-dyndns-update', +) +def command_template(metadata): + empty_command = f'/usr/bin/python3 /opt/hetzner-dyndns/src/hetzner-api-dyndns.py --api_key {{}} --zone {node.metadata.get('hetzner-dyndns/zone')} --record {node.metadata.get('hetzner-dyndns/record')}' + + return { + 'systemd-timers': { + 'timers': { + 'hetzner-dyndns-update': { + 'command': node.metadata.get('hetzner-dyndns/api_key').format_into(empty_command), + }, + }, + }, + } diff --git a/nodes/sophie/vmhost.py b/nodes/sophie/vmhost.py index aca520c..95abe56 100644 --- a/nodes/sophie/vmhost.py +++ b/nodes/sophie/vmhost.py @@ -8,6 +8,7 @@ nodes['sophie.vmhost'] = { 'smartd', 'vmhost', 'zfs', + 'hetzner-dyndns' }, 'groups': { 'debian-bookworm', @@ -21,6 +22,11 @@ nodes['sophie.vmhost'] = { 'groups': { 'nas': {}, }, + 'hetzner-dyndns': { + 'zone': 'sophies-kitchen.eu', + 'record': 'home.router', + 'api_key': vault.decrypt('encrypt$gAAAAABoABHrRTTyOAAFIsHK_g-bubDoNJidbAQ6_0VXyqfal8-wpVMuPPlrw-OtbI1AjNU6Rd1_gKTvwYtNYO9X6RuvuW3TCCH_eitpsoylVEQ0X6SDFNQAFfjkRlOgEiFl85oyTazl'), + }, 'interfaces': { 'br1': { 'ips': {