-
Notifications
You must be signed in to change notification settings - Fork 1
Backup | Mise en place de la backup cloud
Cette page décrit les étapes à suivre pour mettre en place la backup cloud présentée ici.
Vous aurez besoin :
- de ce dépôt
- d'un compte Scaleway
La première étape est de créer le Bucket Scaleway sur lequel les fichiers seront stockés. Pour éviter que ce document ne devienne rapidement caduque suite aux évolutions côté Scaleway, nous ne rentrerons pas dans le détail du formulaire. Assurez-vous simplement que :
- le bucket est localisé à Paris
- la visibilité du bucket est bien privée
La seconde étape est de générer la clé API qui servira à communiquer avec l'API de Scaleway pour automatiser l'envoi de fichiers sur le Bucket. À l'heure où j'écris ces lignes, vous devriez pouvoir générer une clé en allant dans l'onglet "Identifiants" des paramètres de votre projet.
Quoi qu'il en soit, vous devez obtenir deux choses :
- une clé d'accès
- une clé secrète
rclone
est le programme qui sert à chiffrer nos fichiers de backup et les envoyer ensuite sur le bucket. Pour ce faire, rclone
a besoin d'un fichier de configuration rclone.conf
dans lequel sont détaillés les identifiants d'accès au bucket et les paramètres du chiffrage.
Notre fichier rclone.conf
est généré automatiquement sur la base d'un template (que vous trouverez dans ce dépôt à l'adresse /config/rclone.conf.template
) dans lequel des variables d'environnement sont insérées.
Ne touchez pas à ce fichier template, tout ce que vous avez à faire est de compléter les variables d'environnement suivantes dans le fichier .env
:
RB_DATABASE_REMOTEBACKUP_KEY_ID | Clé d'accès de l'API Scaleway (voir la section précédente) |
RB_DATABASE_REMOTEBACKUP_KEY_SECRET | Clé secrète de l'API Scaleway (voir la section précédente) |
RB_DATABASE_REMOTEBACKUP_BUCKET_ENDPOINT | URL vers l'endpoint du bucket, trouvable dans les paramètres du bucket |
RB_DATABASE_REMOTEBACKUP_BUCKET_NAME | Nom du bucket |
RB_DATABASE_REMOTEBACKUP_BUCKET_PASSWORD | Mot de passe qui sert à (dé)chiffrer les fichiers envoyés sur le bucket. Attention, ce mot de passe ne peut pas être saisi ici en clair et doit être lui-même chiffré via rclone avec la commande suivante : `docker run rclone/rclone obscure MOT_DE_PASSE_EN_CLAIR` |
RB_DATABASE_REMOTEBACKUP_SLACK_WEBHOOK | URL du webhook Slack qui sert à notifier du résultat de la backup (échec ou réussite) |
La dernière étape consiste à mettre en place une policy (une "règle") qui demande à Scaleway de supprimer automatiquement les fichiers vieux de plus de 180 jours, soit environ 6 mois.
Si vous avez correctement configuré votre dépôt (encore une fois, voir le README pour les instructions complètes) et suivi les étapes précédentes, tout ce que vous avez à faire est d'exécuter la commande suivante :
make prod cloudbackuppolicy
Félicitations, tout devrait désormais être fonctionnel. Vous pouvez vous en assurer manuellement en :
- générant une backup local :
make prod exec rb_database_data local_backup
- exécutant la backup cloud :
make cloud_backup
ou./database/scripts/cloud_backup.sh
Pour conclure, vous devriez également mettre en place les cronjobs qui automatisent ces deux commandes mais cela sort du cadre de ce document.