txs:infra-p18

TX Printemps 2018 : Backup, Docker et Sécurité

Introduction

Les conteneurs chargés d’effectuer la sauvegarde des services et la rotation des sauvegardes se nomment respectivement : pica-backup et backup-rotation. Un système de configuration centralisé entre les deux conteneurs a été écrit, afin de pouvoir en même temps définir un service à sauvegarder et configurer les rotations. Le fichier backup_data.json permet d’écrire cette configuration et doit être situé dans le même répertoire que les dockerfiles des deux conteneurs.

Configuration

La configuration des conteneurs consiste à définir les services installés et les fréquences de rotation de leurs sauvegardes.

Exemple de fichier JSON :

{
  "wekan":
    {
      "Host": "wekan-db",
      "Port": "27017",
      "Database": "wekan",
      "Type": "mongo",
      "Folder": "wekan",
      "Cron" : "0 * * * *",
      "Init-Backup" : "0",
      "Backup-rota":
          {
              "Hour" : 24,
              "Day" : 7,
              "Week" : 4,
              "Month" : 12
          }
    },
  "etherpad":
    {
      "Host": "etherpad-db",
      "Port": "3306",
      "User": "root",
      "Password": "lolilolilol",
      "Database": "--all-databases",
      "Type": "mysql",
      "Folder": "etherpad",
      "Cron" : "0 * * * *",
      "Options" : "--single-transaction",
      "Init-Backup" : "0",
      "Backup-rota":
          {
              "Hour" : 24,
              "Day" : 7,
              "Week" : 4,
              "Month" : 12
          }
    }
}

Cette configuration indique que l’on souhaite effectuer la sauvegarde et de la rotation de sauvegarde pour deux services : wekan-db et etherpad-db. Chaque service peut définir un certain nombre d’attributs obligatoires :

  • “Host”: nom du service indiqué dans le fichier docker-compose.yml ;
  • “Port”: port utilisé par le serveur de base de données ;
  • “Database”: nom de la base de données ;
    • “Cron” : Indicateur de temps cron indiquant à quelle fréquence sont enregistrées les backups ;
    • “Type”: type de la base de données ;
    • “Folder”: nom du dossier de sauvegarde du service ;
    • “Backup-rota”: période de rotation voulue.

Le script fake_backups.py permet de générer des fichiers vides, ayant leurs noms formatés comme suit : AAAA-MM-JJHHmmSS et comportant l’extension .tar.gz. Ces fichiers permettent de simuler des sauvegardes effectuées par le conteneur backup-rotation sans utiliser inutilement de l’espace disque. Le script reçoit deux paramètres : -f pour indiquer le chemin absolu du dossier dans lequel générer les fichiers et -n afin d’indiquer le nombre de fichiers que l’on souhaite créer. À partir du paramètre -n le script crée le premier fichier en le nommant selon la date actuelle, puis remonte d’une heure dans le temps afin de nommer le reste des fichiers jusqu’à arriver au nombre de fichiers spécifié par le paramètre -n.

Exemple :

./fake_backups.py -f /root -n 4

Si le script est lancé le lundi 26 mars à 20h43 et 18s alors les fichiers suivants seront créés dans le dossier /root :

2018-03-26204318.tar.gz

2018-03-26194318.tar.gz

2018-03-26184318.tar.gz

2018-03-26184318.tar.gz

  • txs/infra-p18.1522231682.txt.gz
  • (modification externe)