bws = libs.bwsops.BwSops("secrets.json") uberspaceify = libs.uberspace.Uberspaceify() def generate_default_repos(node_name, username): return { "main-cyan": { "repo_password": bws.get([node_name, "clerie-backup-job-main"]), "repo_url": f"https://cyan.backup.clerie.de/{node_name}/main", "auth_username": node_name, "auth_password": bws.get([node_name, "clerie-backup-target-cyan"]), "files": [ f"/home/{username}", f"/var/www/virtual/{username}", ], "excludes": [ "/home/*/.cache", ], }, "main-magenta": { "repo_password": bws.get([node_name, "clerie-backup-job-main"]), "repo_url": f"https://magenta.backup.clerie.de/{node_name}/main", "auth_username": node_name, "auth_password": bws.get([node_name, "clerie-backup-target-magenta"]), "files": [ f"/home/{username}", f"/var/www/virtual/{username}", ], "excludes": [ "/home/*/.cache", ], }, } nodes = uberspaceify.nodes({ "clerie.uber.space": { "bundles": ( "uberspace-redirect-clerie", "uberspace-clerie-backup", "uberspace-clerie-monitoring", "uberspace-crontab-dir", "uberspace-supervisord", ), "metadata": { "clerie-backup": { "repos": generate_default_repos("clerie.uber.space", "clerie"), }, "cron": { "jobs": { "backup_main-cyan": "42 */2 * * * clerie-backup main-cyan backup && clerie-backup-update-monitoring main cyan", "backup_main-cyan_mysql": "52 */2 * * * clerie-backup main-cyan restic backup --stdin-filename mysql-databases.sql --stdin-from-command -- mysqldump --all-databases && clerie-backup-update-monitoring main_mysql cyan", "backup_main-magenta": "13 */2 * * * clerie-backup main-magenta backup && clerie-backup-update-monitoring main magenta", "backup_main-magenta_mysql": "23 */2 * * * clerie-backup main-magenta restic backup --stdin-filename mysql-databases.sql --stdin-from-command -- mysqldump --all-databases && clerie-backup-update-monitoring main_mysql magenta", }, }, }, }, "cleriewi.uber.space": { "bundles": ( "uberspace-redirect-clerie", "uberspace-clerie-backup", "uberspace-crontab-dir", ), "metadata": { "clerie-backup": { "repos": generate_default_repos("cleriewi.uber.space", "cleriewi"), }, "cron": { "jobs": { "backup_main-cyan": "42 */2 * * * clerie-backup main-cyan backup && clerie-backup-update-monitoring main cyan", "backup_main-magenta": "13 */2 * * * clerie-backup main-magenta backup && clerie-backup-update-monitoring main magenta", }, }, }, }, })