Backups
Für automatisierte Backups der Apps verwenden wir den auf Restic basierenden Backup Bot II der Co-op Cloud sowie unser selbstentwickeltes Tool alakazam.
Diese Anleitung beschränkt sich auf Backups der KolliCloud-Apps. Es empfiehlt sich, zusätzlich Backups des jeweiligen Host-Systems einzurichten.
Vorraussetzungen
Grundlegende Linux-Kenntnisse
Erfahrung mit bash, git und Docker
optional: Einen externen Speicherort via S3, SFTP oder SSH
Alakazam-Konfiguration
In der zuvor angelegten Instanzkonfiguration (z.B. kolli.example.org.yml), ergänze die Konfiguration für den Backup-Bot.
backup-bot-two:
env:
RESTIC_REPOSITORY: "s3:<s3-storage-url>/<bucket>"
AWS_ACCESS_KEY_ID: "<AWS_ACCESS_KEY_ID>"
secrets:
aws_secret_access_key: ""Achte darauf, das Secret nicht im Klartext zu commiten. Erwäge git-crypt oder das Setzen der Secrets direct via abra app secret insert und lasse dann die secrets-Sektion in der .yml weg.
Wir verwenden standardmäßig einen S3-Storage. Um alternativ einen anderen Speicherort zu nutzen, ergänze die benötigten Umgebungsvariablen unter env oder uncomment sowie etwaige Secrets und füge die folgende Sektion comment zum Überschreiben der Defaultkonfiguration ein:
backup-bot-two:
comment:
- SECRET_AWS_SECRET_ACCESS_KEY_VERSION
- compose.s3.ymlFür Lösungen via SSH oder SFTP, siehe das Recipe. Dort findet sich auch eine Anleitung, um Push-Benachrichtigungen zum Zustand der Backups einzurichten.
Deployment
Nach der Anpassung der Instanzkonfiguration (und ggf. manuellem Setzen der Secrets via abra, führe folgende Schritte aus:
alakazam kolli.example.org.yml config -r backup-bot-twoDaraufhin wird die .env Datei für den Backup-Bot unter ~/.abra/servers/kolli.example.org/backup.kolli.example.org.yml (re-)generiert.
je nach Variante: Generiere die Secrets für den Backup-Bot:
alakazam kolli.example.org.yml secrets -r backup-bot-twoDeploye und initialisiere den Backup-Bot:
alakazam kolli.example.org.yml deploy -r backup-bot-twoKonfiguration der App-Backups
Der Backup-Bot sichert bei gesetztem Docker-Label standardmäßig alle Volumes der entsprechenden App. Darüber hinaus sind zusätzlich Pre- und Post-Hooks z.B. für das Erstellen von SQL-Dumps möglich.
Für die unter Installation→Apps aufgelisteten Anwendungen sind die dafür nötigen Label alle bereits im jeweiligen Recipe gesetzt. Um für ein eigenes Recipe die Backups zu konfigurieren, siehe hier oder orientiere dich an den von uns gewarteten Recipes.
Ausführung
Der Backup-Bot sollte jetzt entsprechend des CRON_SCHEDULE in der backup.kolli.example.org.yml automatisch ausgeführt werden.
Verifiziere dies gerne zu einem dem Schedule entsprechend geeigneten Zeitpunkt durch auflisten aller Backup-Snapshots:
abra app run backup.kolli.example.org.yml app -- backup snapshotsUm sicherzustellen dass alle Volumes gesichert werden hilft ein Blick in den letzten Snapshot:
abra app run backup.kolli.example.org.yml app -- backup ls /var/lib/docker/volumes