from celery import shared_task from .models import * import os import subprocess @shared_task def whereami(): print(os.uname()) return os.uname() def configure_wireguard_server(wireguardvpnpool): """ - Create wireguard config (DB query -> string) - Submit config to cdist worker - Change config locally on worker / commit / shared """ config = wireguardvpnpool.wireguard_config server = wireguardvpnpool.vpn_server_hostname print(f"Configuring VPN server {server} (async)") # cdist_configure_wireguard_server.apply_async((config, server), queue='cdist') cdist_configure_wireguard_server.apply_async((config, server)) @shared_task def cdist_configure_wireguard_server(config, server): """ Create config and configure server. To be executed on the cdist workers. """ dirname= "/home/app/.cdist/type/__ungleich_wireguard/files/" fname = os.path.join(dirname,server) print(f"Configuring VPN server {server} (on cdist host)") with open(fname, "w") as fd: fd.write(config) subprocess.run(f"cd {dirname} && git pull && git add {server} && git commit -m 'Updating config for ${server}' && git push", shell=True) subprocess.run(f"cdist config -vv {server}", shell=True) # FIXME: # ensure logs are on the server # ensure exit codes are known return "All good"