2.4 KiB
2.4 KiB
Backup-Automation Projekt - Git-Struktur
backup-automation/
├── README.md # Gesamtdokumentation
├── .gitignore
├── kestra/
│ └── workflows/
│ ├── backup-provision.yaml # Hauptworkflow: Netbox→Ansible→Backup
│ └── backup-status-check.yaml # Tägliche Status-Checks
├── ansible/
│ ├── inventory/
│ │ └── dynamic_inventory.py # Netbox-Integration
│ ├── playbooks/
│ │ ├── install-borg-client.yaml # Borg auf Clients
│ │ ├── configure-backup-server.yaml # Backup-Server Setup
│ │ └── update-backup-config.yaml # Config-Updates
│ ├── roles/
│ │ ├── borg-client/
│ │ │ ├── tasks/main.yaml
│ │ │ ├── templates/
│ │ │ │ ├── borg-backup.sh.j2
│ │ │ │ ├── pre-backup-docker.sh.j2
│ │ │ │ └── systemd-timer.j2
│ │ │ └── handlers/main.yaml
│ │ └── backup-server/
│ │ ├── tasks/main.yaml
│ │ ├── templates/
│ │ │ ├── rclone.conf.j2
│ │ │ └── rclone-sync.service.j2
│ │ └── files/
│ └── group_vars/
│ ├── all.yaml
│ └── backup_clients.yaml
├── scripts/
│ ├── borg-backup-wrapper.sh # Lokaler Wrapper auf jedem Host
│ ├── docker-volume-dump.sh # Docker-spezifische Pre-Backup
│ ├── backup-status-reporter.sh # Status an Kestra zurück
│ └── restore-from-borg.sh # Restore-Hilfsskript
├── docs/
│ ├── architecture.md
│ ├── setup-guide.md
│ ├── troubleshooting.md
│ └── restore-procedures.md
└── examples/
├── kestra-flow.yaml.example
├── netbox-tag.example
└── s3-structure.example
Ablauf:
- Kestra startet täglich (z.B. 02:00)
- Abfrage Netbox API: Alle Systeme mit TAG
backup=true - Pro System: Trigger Ansible gegen diesen Host
- Ansible:
- Prüft ob Borg installiert
- Wenn nicht: installiert + konfiguriert
- Stellt Backup-Scripts bereit
- Startet Borg Backup via Systemd
- Borg läuft auf jedem Host (inkrementell)
- Backup-Server sammelt alle Borg-Repos
- Rclone syncronisiert nightly nach S3