Odoo 8 – sauvegarde automatisée par le module auto_backup

Le module auto_backup développé par Yenthe Van Ginneken, permet de mettre en oeuvre une sauvegarde automatisée de 1 ou plusieurs bases de données Odoo.
L'auteur du module a rédigé une excellente procédure en anglais.
Je m'autorise néanmoins à la décrire d'une autre façon et en français.

Je souhaite mettre en place la sauvegarde automatisée d'une instance Odoo "prod" s'exécutant sur un serveur Debian 8 (port 8069).
Les fichiers de sauvegarde seront copiés par sftp sur un 2ème serveur Debian.

Ce qui se traduit par le schéma suivant :

Description de la procédure
- S'assurer au préalable que les règles firewall permettent le flux "sftp" entre les 2 serveurs

- se connecter sur le serveur Debian 8 avec le user odoo

- créer une instance et une BD Odoo "autobackup" (port 8070) dédiée au pilotage de la sauvegarde (non décrit ici)

- récupérer le module auto_backup
cd /tmp
git clone https://github.com/Yenthe666/auto_backup.git
mv auto_backup/auto_backup <votre repertoire addons>

- installation des prérequis
sudo apt-get install python-pip
sudo apt-get install python-dev
sudo pip install pysftp

- installation du module auto_backup

 

- installation du module base_setup pour permettre la configuration des mails sortants

- aller dans le menu "Configuration>configure backup" et créer un enregistrement :

- aller dans le menu "Technical>Automation>Actions planifiées" et sélectionner l'enregistrement "Backup scheduler" :

- Le positionner à "actif" et renseigner la date de la 1ère sauvegarde

- configurer le serveur de mails sortant, par exemple :

... Une fois la sauvegarde réalisée, elle se concrétise par la présence d'un fichier <date-heure>_prod.dump créé dans le répertoire /home/odoo/backups des 2 serveurs Debian.
Ce fichier a le même format que le fichier zip produit lors d'une sauvegarde Odoo d'une base de données.


Restauration de la sauvegarde
En cas de besoin, la restauration se fait par l'interface Odoo d'administration des bases de données

Complément d'information
- Pour lancer l'instance Odoo de production (ici port 8069), il est recommandé d'exclure la base "autobackup" via la clause "--db-filter" :
/home/odoo/odoo8/odoo/odoo.py --xmlrpc-port=8069 --db-filter='^(?!autobackup)' --logfile=/home/odoo/log/odoo.log

- Pour ensuite ajouter cette commande dans /etc/rc.local, je n'ai pas trouvé comment faire, sans passer par un script shell (ex: lance_sauf_autobackup.sh) qui encapsule la commande précédente.
Il faut ensuite ajouter la ligne suivante dans /etc/rc.local
su - odoo -c "/home/odoo/lance_sauf_autobackup.sh &"

5 réflexions au sujet de « Odoo 8 – sauvegarde automatisée par le module auto_backup »

  1. Bonjour et merci.

    En passant par un module, peut on restaurer l'archive sur un serveur Odoo qui ne dispose pas de ce module ?
    Utiliser sftp depuis un utilisateur Odoo me semble être une breche de sécurité majeure.

    Tant que vous en êtes à utiliser la ligne de commande, pourquoi ne pas l'utiliser aussi pour faire le boulot de façon optimale ?

    1. Bonjour,
      Je n'aime pas m'étendre publiquement sur les problèmes de sécurité mais je vais expliquer un peu pour tous ceux qui utilisent ce genre de module.

      Il y a trois niveaux d'habilitation sur un serveur Openerp, du plus critique au moins critique :
      – l'admin serveur
      – le super admin pour la gestion des bases avec un mot de passe en clair 🙁 dans le fichier de configuration du service
      – l'admin de chacune des bases, avec des identifiants de connexion dans chaque base de données, admin/admin si quelqu'un n'a pas été prudent sur une base de test.

      Avec un module, l'admin identifié dans une base dispose de privilèges qu'il ne devrait pas avoir sur un système en production :
      – sauvegarder une base et l'envoyer où il veut
      – restaurer une base à partir d'une archive située n'importe où
      – accéder à l'ensemble des archives disponibles sur un serveur de sauvegardes

      L'utilisation d'un super admin dont le mot de passe est lisible dans le fichier de configuration a déjà été beaucoup discuté, et odoo n'est pas parfait sur ce point, Le fait que la sauvegarde transite sur un poste de travail hors périmètre contrôlé est fort discutable, mais c'est pratique. Court-circuiter le super-admin, si c'est ce que fait le module, revient à abandonner les dernières notions de sécurité, enfin, ce n'est qu'un avis 😉

      Je préconise de sauvegarder par script car cette sauvegarde s'effectue sous les privilèges gérés par l'administrateur du serveur. Idéalement, une sauvegarde doit être cryptée. Le serveur de sauvegarde (non exposé à internet) peut aussi prélever la sauvegarde afin de ne pas ouvrir d'accès. Tout ceci est encore plus important pour une restauration, car qui dit restauration dit maîtrise des identifiants de tous les utilisateurs.

      J'espère avoir illustré mon propos sans avoir donné des idées. 😉

    2. Globalement, je suis d'accord avec toi.

      Selon moi, cette solution peut néanmoins être utilisée dans certains cas d'usage non critiques, par exemple :
      – site web "vitrine" ODOO
      – instance ODOO non exposée sur le web

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *