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.

Attention

Pour le moment, la version publiée d'EoleDB gère uniquement les bases de données MySQL et PostgreSQL.

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 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[1], 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[1] 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