Externalisation des bases de données MySQL avec EoleDB

EoleDB est disponible depuis la version 2.5.2 d'EOLE. C'est une re-implémentation de l'ancien gestionnaire des bases de données EOLE (eole-sql) dont les objectifs principaux sont :

  • n'utiliser qu'un seul fichier de configuration ;

  • supporter nativement plusieurs types de bases de données (MySQL, PostgreSQL, SQLite, ...) ;

  • supporter nativement l'externalisation des bases de données sur d'autres serveurs ;

  • ne plus avoir à fournir des scripts python dans les paquets d'application web du projet EOLE pour pouvoir générer ou mettre à jour des bases de données (cf eole-sql : /usr/share/eole/applications/gen/, /usr/share/eole/applications/passwords/, /usr/share/eole/applications/updates/).

EoleDB rend possible l'externalisation des bases de données d'un module EOLE.

Remarque

Pour le moment, EoleDB gère uniquement les bases de données MySQL[1] et PostgreSQL[2].

Installation d'EoleDB

EoleDB est pré-installé sur les modules où des applications web le requièrent.

Sur les autres modules l'installation d'EoleDB se fait manuellement sur le serveur qui héberge l'application web avec la commande apt-eole :

# apt-eole install eole-db

Configuration

Par défaut le serveur de base de données est paramétré comme étant local. Dans le cas où le serveur est distant quelques variables sont à renseigner.

  • Adresse du serveur de base de données : adresse IP, nom de machine ou nom de domaine du serveur de base de données distant. Cette valeur est utilisée pour toutes les applications web qui ne définiront pas elles-mêmes un serveur de base de données.

  • Port du serveur de base de données : port du serveur de base de données utilisé, par exemple 3306 pour le serveur MySQL fourni par EOLE.

  • Nom d'utilisateur d'administration : identifiant du gestionnaire de la base de données distante.

  • Fichier de mot de passe : chemin d'accès vers le fichier qui contient le mot de passe du gestionnaire, par exemple /root/bdpass.txt. Ce fichier doit être accessible par EoleDB, idéalement le fichier doit avoir les droits 600.

  • Machines qui peuvent utiliser le serveur de BDD : permet d'autoriser des machines à accéder à l'administration des bases distantes #fixme, si rien n'est renseigné l'adresse IP du serveur utilisant EoleDB est ajoutée automatiquement dans le fichier de configuration.

EoleDB dispose d'un fichier de configuration principale, /etc/eole/eole-db.conf, géré par Creole.

Ce fichier est au format YAML[3], il défini le comportement par défaut d'EoleDB si aucune configuration spécifique n'est définie par l'application web.

Exemple

1
dbhost: 192.168.0.24
2
dbport: 3306
3
dbroot: root
4
client_hosts: ['192.168.0.26']
5
dbrootpwd: /root/bdpass.txt

Les application web disponible sur EOLE fournissent un fichier de configuration au format YAML[3] qui surcharge le fichier de configuration principal d'EoleDB.

Ces fichiers de configuration spécifiques aux applications redéfinissent le comportement par défaut d'EoleDB, ils sont stockés dans /etc/eole/eole-db.d/.

Pour des raisons pratiques, EoleDB réalise également le changement de mots de passe dans les fichiers de configuration des applications, les mots de passes sont changées à chaque lancement de la commande eole_db_gen.

Dans le cas de EOLE cette commande est lancée au minimum à chaque reconfigure.

Pour utiliser EoleDB il faut donc mettre en place les fichiers de configuration et utiliser la commande eole_db_gen.

Sans paramètre, la commande eole_db_gen utilise les paramètres par défaut.

Pour utiliser une autre configuration des options sont disponibles :

  • -h, --help: Affiche le message d'aide à l'utilisation de la commande ;

  • -c, --config : Définir un fichier de configuration a utiliser à la place de /etc/eole/eole-db.conf ;

  • -d, --dbdir : Définir un répertoire qui contiens les fichiers de configuration des applications qui n'est pas /etc/eole/eole-db.d/ ;

  • -b, --backup-dir : Définir un répertoire pour copier les sauvegardes des fichiers modifiés par EoleDB.

Truc & astuce

Pour obtenir de l'aide, utiliser la manuel de la commande :

# man eole_db_gen

Pour connaître les différents paramètres de la commande eole_db_gen :

# eole_db_gen --help