backup-automation/FILES_INDEX.md

4.1 KiB

Backup-Automation - Datei-Index

📁 Projektstruktur

Dokumentation

  • README.md - Hauptdokumentation, Setup, Troubleshooting
  • GETTING_STARTED.md - Schnelleinstieg, Schritt für Schritt
  • ARCHITECTURE.md - Detaillierte Architektur & Datenfluss
  • SETUP_CHECKLIST.md - Vollständige Setup-Checkliste
  • FILES_INDEX.md - Dieser Index

Kestra Workflows

  • kestra/workflows/backup-provision.yaml - Hauptworkflow
    • Netbox Abfrage
    • Ansible Playbook Trigger
    • Status Reporting

Ansible Playbooks & Roles

  • ansible/playbooks/install-borg-client.yaml - Installation auf Clients
  • ansible/playbooks/configure-backup-server.yaml - Server-Setup
  • ansible/roles/borg-client/ - Role für Client-Installation
  • ansible/roles/backup-server/ - Role für Server-Setup

Ansible Templates (.j2)

  • borg-backup.sh.j2 - Hauptbackup-Script

    • Pre-Backup Hooks
    • Borg Execution
    • Pruning & Retention
  • pre-backup-docker.sh.j2 - Docker-spezifische Pre-Backup

    • MySQL/PostgreSQL Dumps
    • Named Volume Export
    • Compose-File Backup
  • borg-backup.service.j2 - Systemd Service

  • borg-backup.timer.j2 - Systemd Timer (tägliche Ausführung)

  • backup-status-reporter.sh.j2 - Status Report

  • rclone.conf.j2 - Rclone S3 Konfiguration

  • rclone-sync.service.j2 - Systemd Service für S3-Sync

  • rclone-sync.timer.j2 - Systemd Timer für S3-Sync

Bash-Scripts (zum Ausführen auf Hosts)

  • scripts/borg-backup-wrapper.sh - Wrapper mit Error-Handling
  • scripts/docker-volume-dump.sh - Docker Volume Export
  • scripts/backup-status-reporter.sh - Status Report
  • scripts/restore-from-borg.sh - Restore-Helfer

Konfigurationen

  • .gitignore - Git Ignore Patterns
    • Secrets, Keys
    • Temporäre Dateien
    • IDE/OS-Dateien

📊 Größe & Komplexität

Komponente Größe Komplexität
Kestra Workflow ~400 Zeilen Mittel
Ansible Playbook Client ~200 Zeilen Mittel
Ansible Playbook Server ~250 Zeilen Mittel
Borg Backup Script ~200 Zeilen Mittel
Docker Pre-Backup ~150 Zeilen Mittel
Rclone Config ~30 Zeilen Einfach
Dokumentation ~3000 Zeilen --

🔄 Datenabhängigkeiten

backup-provision.yaml (Kestra)
  ├── Nutzt: NETBOX_TOKEN (Secret)
  ├── Triggert: install-borg-client.yaml (Ansible)
  │   ├── Nutzt: borg-backup.sh.j2
  │   ├── Nutzt: pre-backup-docker.sh.j2
  │   ├── Nutzt: borg-backup.service.j2
  │   └── Nutzt: borg-backup.timer.j2
  │
  └── Auf Backup-Server:
      ├── configure-backup-server.yaml (Ansible)
      ├── Nutzt: rclone-sync.service.j2
      ├── Nutzt: rclone-sync.timer.j2
      └── Nutzt: rclone.conf.j2

🚀 Erste Verwendung

  1. README.md lesen - Überblick
  2. GETTING_STARTED.md folgen - Step-by-Step
  3. SETUP_CHECKLIST.md durcharbeiten - Validierung
  4. ARCHITECTURE.md - Tieferes Verständnis

📝 Anpassungen

Pro Host anpassen:

  • Template-Variablen in Ansible group_vars/ / host_vars/
  • Beispiele: Backup-Pfade, Exclude-Listen, Timeouts

Pro Server anpassen:

  • rclone.conf.j2 - S3 Credentials, Region
  • borg-backup.timer.j2 - Backup-Zeit (aktuell 03:00)
  • rclone-sync.timer.j2 - Sync-Zeit (aktuell 04:00)

Kestra anpassen:

  • backup-provision.yaml - Netbox Abfrage-Parameter
  • Schedule ändern (aktuell tägliche 02:00)
  • Error Handling / Notifications

🔐 Sicherheit

Secrets (NICHT ins Git!)

  • Netbox API Token → Kestra Secrets
  • Hetzner S3 Keys → Ansible Vault / Kestra Secrets
  • SSH Private Keys → /root/.ssh/ (Host-lokal)

SSH Key Management

  • Ed25519 Keys generieren pro Host
  • Public Keys → Backup-Server authorized_keys
  • Mit restrict,command=... limitation

📚 Referenzen


Stand: 2026-09-09
Version: 1.0
Maintainer: Jonny @ MBO-Tech-IT