Sauvegarder ses données sur une instance OpenStack

Vous avez peut être un ou plusieurs serveurs en production et vous souhaitez faire un backup simple et rapide des données (la partie gérée par un client par exemple).
Vous disposez également d’un espace de stockage géré sur OpenSwift (OVH ObjetStorage par exemple).

On va commencer par installer Duplicity, l’outil pour faire les backup (on gère le backup incrémental) qui gère pleins de protocoles.

apt-get -y install duplicity

Il faut aussi installer swift client et keystone pour la gestion des accès.

apt-get -y install python-swiftclient python-keystoneclient

Attention actuellement duplicity gère Python2, donc installer swift-client en Python3 ne servira à rien.

Ensuite on va sur le manager OVH, dans la partie Cloud, on demande la création d’un container via l’item Stockage. C’est ce container qui stockera les données.

Un exemple de configuration

On va créer un utilisateur spécifique via l’item Openstack pour se connecter à ce conteneur (pour limiter les problèmes de fuites)

Une fois l’utilisateur créé, cliquez sur la clé à droite puis choisissez l’item « Ouvrir Openstack Horizon », utilisez les identifiants fraîchement créés.

L’information intéressante à retrouver sur Horizon est le « tenantname » (c’est la partie que j’ai rendu flou sur l’image suivante)

Maintenant voici le script qui va s’occupper de faire le backup incrémental entre notre serveur et notre espace de stockage

#!/bin/bash

src="/var/www/mon-project"
dest="swift://test-container"
export PASSPHRASE="super passphrase"

export SWIFT_USERNAME="Utilisateur généré via OVH"
export SWIFT_PASSWORD="Le mot de passe généré pour l'utilisateur"
export SWIFT_AUTHURL="https://auth.cloud.ovh.net/v2.0/"
export SWIFT_AUTHVERSION="2"
export SWIFT_TENANTNAME="le tenantname que l'on a récupéré"
export SWIFT_REGIONNAME="La région utilisée ici : SBG1"

/usr/bin/duplicity --verbosity notice --progress --asynchronous-upload --cf-backend swift --full-if-older-than 1W --volsize 100 "$src" "$dest"

unset PASSPHRASE SWIFT_USERNAME SWIFT_PASSWORD SWIFT_AUTHURL SWIFT_AUTHVERSION SWIFT_TENANTNAME  SWIFT_REGIONNAME

Petites précisions :
– Si vous oubliez votre passphrase, c’est mort.
– Si vous changez votre passphrase, le prochain backup sera complet pour tout écraser, et non incrémental
– J’utilise l’option « –full-if-older-than » pour forcer un backup complet chaque semaine, mais l’option peut être mise pour chaque mois, année…

Source