repositories: - path: {{ borg_repo }} label: storagebox source_directories: {% for path in backup_sources %} - {{ path }} {% endfor %} ssh_command: ssh -i {{ borg_ssh_key }} remote_path: {{ borg_remote_path }} encryption_passphrase: "{{ borg_passphrase }}" compression: {{ borg_compression }} archive_name_format: '{{ inventory_hostname }}-{now:%Y-%m-%d_%H-%M}' keep_daily: {{ borg_retention_daily }} keep_weekly: {{ borg_retention_weekly }} keep_monthly: {{ borg_retention_monthly }} checks: - name: repository frequency: 2 weeks - name: archives frequency: 4 weeks before_backup: - echo "[$(date)] Starte Backup auf {{ inventory_hostname }}" after_backup: - curl -fsS -m 10 "https://status.guck.tv/api/push/borg-{{ inventory_hostname }}?status=up&msg=OK&ping=" || true - >- bash -c ' STATS=$(borgmatic info --archive latest --json 2>/dev/null | python3 -c " import sys,json d=json.load(sys.stdin)[0][\"archives\"][-1] s=d.get(\"stats\",{}) print(json.dumps({ \"host\":\"{{ inventory_hostname }}\", \"status\":\"ok\", \"duration_sec\":int(s.get(\"duration\",0)), \"original_size\":s.get(\"original_size\",0), \"deduplicated_size\":s.get(\"deduplicated_size\",0), \"compressed_size\":s.get(\"compressed_size\",0), \"nfiles_new\":s.get(\"nfiles\",0) }))" 2>/dev/null || echo "{\"host\":\"{{ inventory_hostname }}\",\"status\":\"ok\"}"); curl -fsS -m 10 -X POST -H "Content-Type: application/json" -d "$STATS" "http://10.1.1.111:9999/api/push" || true ' on_error: - curl -fsS -m 10 "https://status.guck.tv/api/push/borg-{{ inventory_hostname }}?status=down&msg=FEHLER&ping=" || true - >- curl -fsS -m 10 -X POST -H "Content-Type: application/json" -d '{"host":"{{ inventory_hostname }}","status":"error","message":"Backup fehlgeschlagen"}' "http://10.1.1.111:9999/api/push" || true