Fix: Nur reale URLs verwenden (kestra.pve.mbo-tech-it.de, gitea.mbo-tech-it.de, netbox.mbo-tech-it.de)
Backup-Server Hostname bleibt variable {BACKUP_SERVER_HOSTNAME} bis erstellt
This commit is contained in:
parent
9f8dda52d3
commit
ca16aaddd3
|
|
@ -134,7 +134,7 @@ Das System automatisiert Backups aller in Netbox gekennzeichneten Systeme mit:
|
||||||
▼
|
▼
|
||||||
┌──────────────────────────────────────────────────────────────┐
|
┌──────────────────────────────────────────────────────────────┐
|
||||||
│ BACKUP-SERVER │
|
│ BACKUP-SERVER │
|
||||||
│ SSH: backup@backup.mbo-tech-it.de │
|
│ SSH: backup@{BACKUP_SERVER_HOSTNAME} │
|
||||||
│ Repos: /backup/repos/{hostname}/ │
|
│ Repos: /backup/repos/{hostname}/ │
|
||||||
│ • Empfängt Borg Archive via SSH │
|
│ • Empfängt Borg Archive via SSH │
|
||||||
│ • Speichert in lokalen Repositories │
|
│ • Speichert in lokalen Repositories │
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ source secrets.env
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# SSH zum zukünftigen Backup-Server
|
# SSH zum zukünftigen Backup-Server
|
||||||
ssh root@backup.mbo-tech-it.de
|
ssh root@{BACKUP_SERVER_HOSTNAME}
|
||||||
|
|
||||||
# Ansible installieren
|
# Ansible installieren
|
||||||
apt update && apt install -y ansible
|
apt update && apt install -y ansible
|
||||||
|
|
@ -71,12 +71,12 @@ curl -X PATCH https://netbox.mbo-tech-it.de/api/dcim/devices/$DEVICE_ID/ \
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Workflow hochladen
|
# Workflow hochladen
|
||||||
curl -X POST https://kestra.mbo-tech-it.de/api/v1/flows \
|
curl -X POST https://kestra.pve.mbo-tech-it.de/api/v1/flows \
|
||||||
-H "Content-Type: application/yaml" \
|
-H "Content-Type: application/yaml" \
|
||||||
-d @kestra/workflows/backup-provision.yaml
|
-d @kestra/workflows/backup-provision.yaml
|
||||||
|
|
||||||
# Oder via UI:
|
# Oder via UI:
|
||||||
# 1. Login zu https://kestra.mbo-tech-it.de
|
# 1. Login zu https://kestra.pve.mbo-tech-it.de
|
||||||
# 2. Create Flow → Upload YAML
|
# 2. Create Flow → Upload YAML
|
||||||
# 3. Speichern
|
# 3. Speichern
|
||||||
```
|
```
|
||||||
|
|
@ -100,7 +100,7 @@ In Kestra UI:
|
||||||
# In Kestra UI: automation → backup-provision → Execute
|
# In Kestra UI: automation → backup-provision → Execute
|
||||||
|
|
||||||
# Oder via API:
|
# Oder via API:
|
||||||
curl -X POST https://kestra.mbo-tech-it.de/api/v1/namespaces/automation/flows/backup-provision/executions \
|
curl -X POST https://kestra.pve.mbo-tech-it.de/api/v1/namespaces/automation/flows/backup-provision/executions \
|
||||||
-H "Content-Type: application/json"
|
-H "Content-Type: application/json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -118,7 +118,7 @@ tail -f /var/log/mbo-backup/*.log
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Auf Backup-Server
|
# Auf Backup-Server
|
||||||
ssh backup@backup.mbo-tech-it.de
|
ssh backup@{BACKUP_SERVER_HOSTNAME}
|
||||||
|
|
||||||
# Zeige alle Borg Repos
|
# Zeige alle Borg Repos
|
||||||
ls -la /backup/repos/
|
ls -la /backup/repos/
|
||||||
|
|
@ -134,7 +134,7 @@ borg info /backup/repos/SERVERNAME
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# SSH auf Backup-Server
|
# SSH auf Backup-Server
|
||||||
ssh root@backup.mbo-tech-it.de
|
ssh root@{BACKUP_SERVER_HOSTNAME}
|
||||||
|
|
||||||
# Manuelle Rclone Sync
|
# Manuelle Rclone Sync
|
||||||
sudo -u backup rclone sync --progress \
|
sudo -u backup rclone sync --progress \
|
||||||
|
|
@ -162,7 +162,7 @@ Jetzt läuft das System automatisch täglich! 🚀
|
||||||
```bash
|
```bash
|
||||||
# Test SSH vom Client zum Backup-Server
|
# Test SSH vom Client zum Backup-Server
|
||||||
ssh -i /root/.ssh/mbo-backup-key.ed25519 \
|
ssh -i /root/.ssh/mbo-backup-key.ed25519 \
|
||||||
backup@backup.mbo-tech-it.de "echo OK"
|
backup@{BACKUP_SERVER_HOSTNAME} "echo OK"
|
||||||
|
|
||||||
# Falls Fehler: SSH-Key regenerieren
|
# Falls Fehler: SSH-Key regenerieren
|
||||||
ssh-keygen -t ed25519 -N '' -f /root/.ssh/mbo-backup-key.ed25519
|
ssh-keygen -t ed25519 -N '' -f /root/.ssh/mbo-backup-key.ed25519
|
||||||
|
|
|
||||||
26
README.md
26
README.md
|
|
@ -6,7 +6,7 @@ Integriertes Backup-System basierend auf Netbox-Inventar, Kestra-Automation, Bor
|
||||||
|
|
||||||
```
|
```
|
||||||
┌─────────────────────────────────────────────────────────────┐
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
│ Kestra (kestra.mbo-tech-it.de) │
|
│ Kestra (kestra.pve.mbo-tech-it.de) │
|
||||||
│ • Tägliche Abfrage von Netbox (TAG: backup=true) │
|
│ • Tägliche Abfrage von Netbox (TAG: backup=true) │
|
||||||
│ • Trigger Ansible auf allen markierten Hosts │
|
│ • Trigger Ansible auf allen markierten Hosts │
|
||||||
└─────────────────────────────────────────────────────────────┘
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
|
@ -21,11 +21,11 @@ Integriertes Backup-System basierend auf Netbox-Inventar, Kestra-Automation, Bor
|
||||||
│ Backup-Clients (alle gekennzeichneten Systeme) │
|
│ Backup-Clients (alle gekennzeichneten Systeme) │
|
||||||
│ • Borg Backup-Script läuft täglich um 03:00 │
|
│ • Borg Backup-Script läuft täglich um 03:00 │
|
||||||
│ • Docker Pre-Backup Hooks (MySQL, PostgreSQL, Volumes) │
|
│ • Docker Pre-Backup Hooks (MySQL, PostgreSQL, Volumes) │
|
||||||
│ • SSH zu Backup-Server: backup@backup.mbo-tech-it.de │
|
│ • SSH zu Backup-Server: backup@{BACKUP_SERVER_HOSTNAME} │
|
||||||
└─────────────────────────────────────────────────────────────┘
|
└─────────────────────────────────────────────────────────────┘
|
||||||
↓
|
↓
|
||||||
┌─────────────────────────────────────────────────────────────┐
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
│ Backup-Server (backup.mbo-tech-it.de) │
|
│ Backup-Server ({BACKUP_SERVER_HOSTNAME}) │
|
||||||
│ Struktur: /backup/repos/{hostname}/ │
|
│ Struktur: /backup/repos/{hostname}/ │
|
||||||
│ • Zentrale Borg-Repositories pro Host │
|
│ • Zentrale Borg-Repositories pro Host │
|
||||||
│ • SSH-Zugang nur für borg serve (restricted) │
|
│ • SSH-Zugang nur für borg serve (restricted) │
|
||||||
|
|
@ -71,7 +71,7 @@ cd backup-automation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# SSH auf Backup-Server
|
# SSH auf Backup-Server
|
||||||
ssh root@backup.mbo-tech-it.de
|
ssh root@{BACKUP_SERVER_HOSTNAME}
|
||||||
|
|
||||||
# Ansible Playbook ausführen
|
# Ansible Playbook ausführen
|
||||||
ansible-playbook -i localhost, \
|
ansible-playbook -i localhost, \
|
||||||
|
|
@ -84,7 +84,7 @@ ansible-playbook -i localhost, \
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Workflow in Kestra hochladen
|
# Workflow in Kestra hochladen
|
||||||
curl -X POST https://kestra.mbo-tech-it.de/api/v1/flows \
|
curl -X POST https://kestra.pve.mbo-tech-it.de/api/v1/flows \
|
||||||
-H "Content-Type: application/yaml" \
|
-H "Content-Type: application/yaml" \
|
||||||
-d @kestra/workflows/backup-provision.yaml
|
-d @kestra/workflows/backup-provision.yaml
|
||||||
```
|
```
|
||||||
|
|
@ -155,7 +155,7 @@ sudo -u backup rclone sync --progress /backup/repos hetzner:mbo-backups/producti
|
||||||
### Borg Repository Status
|
### Borg Repository Status
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh backup@backup.mbo-tech-it.de
|
ssh backup@{BACKUP_SERVER_HOSTNAME}
|
||||||
borg list /backup/repos/SERVER_NAME
|
borg list /backup/repos/SERVER_NAME
|
||||||
borg info /backup/repos/SERVER_NAME::(latest-backup)
|
borg info /backup/repos/SERVER_NAME::(latest-backup)
|
||||||
```
|
```
|
||||||
|
|
@ -172,7 +172,7 @@ ssh root@SERVER_NAME
|
||||||
|
|
||||||
# 2. Hole aktuelles Backup vom Backup-Server
|
# 2. Hole aktuelles Backup vom Backup-Server
|
||||||
borg extract --progress \
|
borg extract --progress \
|
||||||
backup@backup.mbo-tech-it.de:/backup/repos/SERVER_NAME::(latest) \
|
backup@{BACKUP_SERVER_HOSTNAME}:/backup/repos/SERVER_NAME::(latest) \
|
||||||
/etc
|
/etc
|
||||||
|
|
||||||
# 3. Oder aus S3 (falls lokal nicht verfügbar)
|
# 3. Oder aus S3 (falls lokal nicht verfügbar)
|
||||||
|
|
@ -183,11 +183,11 @@ rclone ls hetzner:mbo-backups/production/repos/SERVER_NAME/
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Liste Backup-Archive
|
# Liste Backup-Archive
|
||||||
borg list backup@backup.mbo-tech-it.de:/backup/repos/SERVER_NAME
|
borg list backup@{BACKUP_SERVER_HOSTNAME}:/backup/repos/SERVER_NAME
|
||||||
|
|
||||||
# Extrahiere einzelne Datei
|
# Extrahiere einzelne Datei
|
||||||
borg extract \
|
borg extract \
|
||||||
backup@backup.mbo-tech-it.de:/backup/repos/SERVER_NAME::archive-name \
|
backup@{BACKUP_SERVER_HOSTNAME}:/backup/repos/SERVER_NAME::archive-name \
|
||||||
path/to/file
|
path/to/file
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -195,7 +195,7 @@ borg extract \
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Auf Backup-Server:
|
# Auf Backup-Server:
|
||||||
ssh backup@backup.mbo-tech-it.de
|
ssh backup@{BACKUP_SERVER_HOSTNAME}
|
||||||
|
|
||||||
# Finde den Export
|
# Finde den Export
|
||||||
ls -la /var/backups/docker/*/
|
ls -la /var/backups/docker/*/
|
||||||
|
|
@ -216,7 +216,7 @@ docker run --rm \
|
||||||
```bash
|
```bash
|
||||||
# Test SSH-Connection:
|
# Test SSH-Connection:
|
||||||
ssh -i /root/.ssh/mbo-backup-key.ed25519 \
|
ssh -i /root/.ssh/mbo-backup-key.ed25519 \
|
||||||
backup@backup.mbo-tech-it.de "echo OK"
|
backup@{BACKUP_SERVER_HOSTNAME} "echo OK"
|
||||||
|
|
||||||
# SSH-Keys neu generieren (falls nötig):
|
# SSH-Keys neu generieren (falls nötig):
|
||||||
ssh-keygen -t ed25519 -N '' -f /root/.ssh/mbo-backup-key.ed25519
|
ssh-keygen -t ed25519 -N '' -f /root/.ssh/mbo-backup-key.ed25519
|
||||||
|
|
@ -226,7 +226,7 @@ ssh-keygen -t ed25519 -N '' -f /root/.ssh/mbo-backup-key.ed25519
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Backup-Server:
|
# Backup-Server:
|
||||||
ssh backup@backup.mbo-tech-it.de
|
ssh backup@{BACKUP_SERVER_HOSTNAME}
|
||||||
borg check -v /backup/repos/SERVER_NAME
|
borg check -v /backup/repos/SERVER_NAME
|
||||||
borg repair /backup/repos/SERVER_NAME
|
borg repair /backup/repos/SERVER_NAME
|
||||||
```
|
```
|
||||||
|
|
@ -253,7 +253,7 @@ sudo -u backup rclone sync --progress --log-level DEBUG \
|
||||||
Settings → Logs → backup-provision
|
Settings → Logs → backup-provision
|
||||||
|
|
||||||
# Manuelle Test:
|
# Manuelle Test:
|
||||||
curl -X GET https://kestra.mbo-tech-it.de/api/v1/namespaces/automation/flows
|
curl -X GET https://kestra.pve.mbo-tech-it.de/api/v1/namespaces/automation/flows
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
- [ ] 2+ CPUs
|
- [ ] 2+ CPUs
|
||||||
- [ ] 4+ GB RAM
|
- [ ] 4+ GB RAM
|
||||||
- [ ] Großes Datenvolume (/backup mit genug Platz)
|
- [ ] Großes Datenvolume (/backup mit genug Platz)
|
||||||
- [ ] Hostname: `backup.mbo-tech-it.de`
|
- [ ] Hostname: `{BACKUP_SERVER_HOSTNAME}`
|
||||||
|
|
||||||
- [ ] Hetzner S3 Credentials besorgen
|
- [ ] Hetzner S3 Credentials besorgen
|
||||||
- [ ] Access Key ID
|
- [ ] Access Key ID
|
||||||
|
|
@ -85,7 +85,7 @@
|
||||||
|
|
||||||
- [ ] Kestra-Workflow YAML ins System laden:
|
- [ ] Kestra-Workflow YAML ins System laden:
|
||||||
```bash
|
```bash
|
||||||
curl -X POST https://kestra.mbo-tech-it.de/api/v1/flows \
|
curl -X POST https://kestra.pve.mbo-tech-it.de/api/v1/flows \
|
||||||
-H "Content-Type: application/yaml" \
|
-H "Content-Type: application/yaml" \
|
||||||
-d @kestra/workflows/backup-provision.yaml
|
-d @kestra/workflows/backup-provision.yaml
|
||||||
```
|
```
|
||||||
|
|
@ -130,7 +130,7 @@
|
||||||
|
|
||||||
- [ ] Auf Backup-Server Repository prüfen:
|
- [ ] Auf Backup-Server Repository prüfen:
|
||||||
```bash
|
```bash
|
||||||
ssh backup@backup.mbo-tech-it.de
|
ssh backup@{BACKUP_SERVER_HOSTNAME}
|
||||||
borg list /backup/repos/TEST_SERVER
|
borg list /backup/repos/TEST_SERVER
|
||||||
borg info /backup/repos/TEST_SERVER
|
borg info /backup/repos/TEST_SERVER
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ tasks:
|
||||||
inventory += """
|
inventory += """
|
||||||
[backup_clients:vars]
|
[backup_clients:vars]
|
||||||
ansible_python_interpreter=/usr/bin/python3
|
ansible_python_interpreter=/usr/bin/python3
|
||||||
backup_repo_server=backup.mbo-tech-it.de
|
backup_repo_server={BACKUP_SERVER_HOSTNAME}
|
||||||
backup_repo_base=/backup/repos
|
backup_repo_base=/backup/repos
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -112,7 +112,7 @@ backup_repo_base=/backup/repos
|
||||||
ansible-playbook \
|
ansible-playbook \
|
||||||
-i {{ vars.ansible_inventory_file }} \
|
-i {{ vars.ansible_inventory_file }} \
|
||||||
ansible/playbooks/install-borg-client.yaml \
|
ansible/playbooks/install-borg-client.yaml \
|
||||||
-e "backup_repo_server=backup.mbo-tech-it.de" \
|
-e "backup_repo_server={BACKUP_SERVER_HOSTNAME}" \
|
||||||
-e "backup_repo_base=/backup/repos" \
|
-e "backup_repo_base=/backup/repos" \
|
||||||
--diff
|
--diff
|
||||||
|
|
||||||
|
|
@ -128,7 +128,7 @@ backup_repo_base=/backup/repos
|
||||||
cd /tmp/backup-automation
|
cd /tmp/backup-automation
|
||||||
|
|
||||||
# SSH zum Backup-Server
|
# SSH zum Backup-Server
|
||||||
ssh -i ~/.ssh/id_ed25519 backup@backup.mbo-tech-it.de << 'EOF'
|
ssh -i ~/.ssh/id_ed25519 backup@{BACKUP_SERVER_HOSTNAME} << 'EOF'
|
||||||
source /home/backup/.bashrc
|
source /home/backup/.bashrc
|
||||||
|
|
||||||
# Hole Device-Liste aus Netbox
|
# Hole Device-Liste aus Netbox
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
become: yes
|
become: yes
|
||||||
|
|
||||||
vars:
|
vars:
|
||||||
backup_repo_server: "backup.mbo-tech-it.de"
|
backup_repo_server: "{BACKUP_SERVER_HOSTNAME}"
|
||||||
backup_repo_base: "/backup/repos"
|
backup_repo_base: "/backup/repos"
|
||||||
backup_user: "backup"
|
backup_user: "backup"
|
||||||
backup_ssh_key_path: "/root/.ssh/mbo-backup-key.ed25519"
|
backup_ssh_key_path: "/root/.ssh/mbo-backup-key.ed25519"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue