221 lines
4.9 KiB
Markdown
221 lines
4.9 KiB
Markdown
# Getting Started - Backup-Automation Setup
|
|
|
|
Schnelleinstieg für MBO-Tech-IT Backup-Automation.
|
|
|
|
## Schritt 1: Repository klonen
|
|
|
|
```bash
|
|
git clone https://gitea.mbo-tech-it.de/claude/backup-automation.git
|
|
cd backup-automation
|
|
```
|
|
|
|
## Schritt 2: Secrets vorbereiten
|
|
|
|
```bash
|
|
# Erstelle secrets.env Datei (NICHT commiten!)
|
|
cat > secrets.env << 'EOF'
|
|
export NETBOX_TOKEN="your-netbox-api-token-here"
|
|
export NETBOX_URL="https://netbox.mbo-tech-it.de"
|
|
export HETZNER_S3_ACCESS_KEY="your-s3-access-key"
|
|
export HETZNER_S3_SECRET_KEY="your-s3-secret-key"
|
|
export HETZNER_S3_REGION="fsn1"
|
|
EOF
|
|
|
|
chmod 600 secrets.env
|
|
source secrets.env
|
|
```
|
|
|
|
## Schritt 3: Backup-Server vorbereiten
|
|
|
|
```bash
|
|
# SSH zum zukünftigen Backup-Server
|
|
ssh root@{BACKUP_SERVER_HOSTNAME}
|
|
|
|
# Ansible installieren
|
|
apt update && apt install -y ansible
|
|
|
|
# Ansible Playbook ausführen
|
|
cd /tmp/backup-automation
|
|
ansible-playbook ansible/playbooks/configure-backup-server.yaml \
|
|
-e "hetzner_s3_access_key=$HETZNER_S3_ACCESS_KEY" \
|
|
-e "hetzner_s3_secret_key=$HETZNER_S3_SECRET_KEY"
|
|
```
|
|
|
|
## Schritt 4: Netbox TAGs vorbereiten
|
|
|
|
### TAGs in Netbox erstellen
|
|
|
|
**Admin → Customization → Tags** und folgende TAGs anlegen:
|
|
|
|
| Name | Slug | Farbe |
|
|
|------|------|-------|
|
|
| auto-backup | auto-backup | 🟢 |
|
|
| env:prod | env-prod | 🔴 |
|
|
| env:staging | env-staging | 🟡 |
|
|
| env:dev | env-dev | 🔵 |
|
|
|
|
**Erforderlich:** Mindestens `auto-backup`
|
|
**Optional:** Umgebungs-TAGs, Tenant-TAGs, etc. (siehe `docs/NETBOX-TAGS.md`)
|
|
|
|
### Systeme taggen
|
|
|
|
**DCIM → Devices** → Gerät öffnen → **Tags** hinzufügen
|
|
|
|
**Beispiel Production-Server:**
|
|
```
|
|
✓ auto-backup (erforderlich!)
|
|
✓ env:prod (optional)
|
|
```
|
|
|
|
**Oder via API:**
|
|
```bash
|
|
DEVICE_ID=123
|
|
curl -X PATCH https://netbox.mbo-tech-it.de/api/dcim/devices/$DEVICE_ID/ \
|
|
-H "Authorization: Token $NETBOX_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"tags": [
|
|
{"name": "auto-backup"},
|
|
{"name": "env:prod"}
|
|
]
|
|
}'
|
|
```
|
|
|
|
**Details zur TAG-Struktur:** Siehe `docs/NETBOX-TAGS.md`
|
|
|
|
## Schritt 5: Kestra Workflow einrichten
|
|
|
|
```bash
|
|
# Workflow hochladen
|
|
curl -X POST https://kestra.pve.mbo-tech-it.de/api/v1/flows \
|
|
-H "Content-Type: application/yaml" \
|
|
-d @kestra/workflows/backup-provision.yaml
|
|
|
|
# Oder via UI:
|
|
# 1. Login zu https://kestra.pve.mbo-tech-it.de
|
|
# 2. Create Flow → Upload YAML
|
|
# 3. Speichern
|
|
```
|
|
|
|
## Schritt 6: Secrets in Kestra setzen
|
|
|
|
In Kestra UI:
|
|
1. **Settings** → **Secrets**
|
|
2. Füge diese Secrets hinzu:
|
|
```
|
|
NETBOX_TOKEN = (dein Token)
|
|
NETBOX_URL = https://netbox.mbo-tech-it.de
|
|
HETZNER_S3_ACCESS_KEY = (dein S3 Access Key)
|
|
HETZNER_S3_SECRET_KEY = (dein S3 Secret)
|
|
```
|
|
|
|
## Schritt 7: Erste Test-Ausführung
|
|
|
|
```bash
|
|
# Manuell triggern (nicht warten auf 02:00 Uhr):
|
|
# In Kestra UI: automation → backup-provision → Execute
|
|
|
|
# Oder via API:
|
|
curl -X POST https://kestra.pve.mbo-tech-it.de/api/v1/namespaces/automation/flows/backup-provision/executions \
|
|
-H "Content-Type: application/json"
|
|
```
|
|
|
|
Logs anschauen:
|
|
```bash
|
|
# SSH auf Backup-Server
|
|
journalctl -u mbo-rclone-sync -f
|
|
|
|
# SSH auf Client
|
|
journalctl -u mbo-backup -f
|
|
tail -f /var/log/mbo-backup/*.log
|
|
```
|
|
|
|
## Schritt 8: Überprüfe Backup-Status
|
|
|
|
```bash
|
|
# Auf Backup-Server
|
|
ssh backup@{BACKUP_SERVER_HOSTNAME}
|
|
|
|
# Zeige alle Borg Repos
|
|
ls -la /backup/repos/
|
|
|
|
# Zeige Archive eines Systems
|
|
borg list /backup/repos/SERVERNAME
|
|
|
|
# Zeige Größe & Statistik
|
|
borg info /backup/repos/SERVERNAME
|
|
```
|
|
|
|
## Schritt 9: Überprüfe S3-Sync
|
|
|
|
```bash
|
|
# SSH auf Backup-Server
|
|
ssh root@{BACKUP_SERVER_HOSTNAME}
|
|
|
|
# Manuelle Rclone Sync
|
|
sudo -u backup rclone sync --progress \
|
|
/backup/repos hetzner:mbo-backups/production/repos
|
|
|
|
# Überprüfe S3 Bucket
|
|
sudo -u backup rclone ls hetzner:mbo-backups/production/repos
|
|
```
|
|
|
|
## Schritt 10: Automatisierung starten
|
|
|
|
In Kestra UI:
|
|
1. Öffne **automation** → **backup-provision**
|
|
2. Überprüfe Schedule: `0 2 * * *` (täglich 02:00)
|
|
3. Überprüfe, dass Enabled = `true`
|
|
4. Speichern
|
|
|
|
Jetzt läuft das System automatisch täglich! 🚀
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### SSH-Fehler?
|
|
```bash
|
|
# Test SSH vom Client zum Backup-Server
|
|
ssh -i /root/.ssh/mbo-backup-key.ed25519 \
|
|
backup@{BACKUP_SERVER_HOSTNAME} "echo OK"
|
|
|
|
# Falls Fehler: SSH-Key regenerieren
|
|
ssh-keygen -t ed25519 -N '' -f /root/.ssh/mbo-backup-key.ed25519
|
|
```
|
|
|
|
### Borg nicht installiert?
|
|
```bash
|
|
# Manuell auf Host:
|
|
apt install -y borgbackup
|
|
|
|
# Oder via Ansible:
|
|
ansible-playbook -i inventory.ini \
|
|
ansible/playbooks/install-borg-client.yaml
|
|
```
|
|
|
|
### Rclone S3 Fehler?
|
|
```bash
|
|
# Teste S3 Verbindung
|
|
sudo -u backup rclone ls hetzner:mbo-backups/
|
|
|
|
# Falls Fehler: Config prüfen
|
|
sudo -u backup rclone config show hetzner
|
|
```
|
|
|
|
---
|
|
|
|
## Nächste Schritte
|
|
|
|
- [ ] Setup-Checkliste durcharbeiten (SETUP_CHECKLIST.md)
|
|
- [ ] Architektur verstehen (ARCHITECTURE.md)
|
|
- [ ] Restore-Test durchführen (README.md → Restore-Proceduren)
|
|
- [ ] Monitoring einrichten (optional)
|
|
- [ ] Team trainieren
|
|
|
|
---
|
|
|
|
**Version**: 1.0
|
|
**Supportiert**: Linux, Proxmox, Docker
|
|
**Fragen?** Siehe README.md oder ARCHITECTURE.md
|