Projet

Général

Profil

EnvoleEoleDB » Historique » Version 4

« Précédent - Version 4/20 (diff) - Suivant » - Version actuelle
Philippe Caseiro, 27/01/2016 11:40


Comment mirger une application Envole à EoleDB

Un mot sur EoleDB

EoleDB est une re-implémentation de l'ancien système eole-sql avec trois objectifs principaux :
  1. Avoir 1 seul fichier de configuration.
  2. Supporter nativement plusieurs types de bases de données (mysql, postgresql, sqlite, ...).
  3. Supporter nativement l'externalisation des baes de données sur d'autres serveurs.

EoleDB dispose d'un fichier de configuration par défaut, /etc/eole/eole-db.conf, ce fichier
au format yaml définis le comportement par défaut de EoleDB si aucune configuration spécifique
n'est définie par l'application.

L'application dispose d'un fichier de configuration au format yaml qui surcharge le comportement
de EoleDB. Les fichiers de configurations sont dans /etc/eole/eole-db.d/**.
Les fichiers de configuration spécifiques aux applications redéfinissent le comportement de EoleDB.

Les options de configuration possibles pour /etc/eole/eole-db.conf:

  • dbcont: Définition du conteneur par défaut de la base de données en mode conteneur
  • dbhost: Définition de l'adresse du serveur de base de données par défaut
  • dbport: Définition du port d'écoute du serveur de base de données par défaut
  • dbroot: Définition du nom de l'utilisateur ayant des droits "Administrateur" sur le serveur de base de données par défaut
  • dbrootpwd: Définition du mot de passe part défaut de l'utilisateur définis par l'option dbroot
  • dbtype : Définition du type de base de données par défaut du serveur de base de données (mysql, pgsql, sqlite, ...)
  • client_hosts: Liste des noms d'hôtes ou IP depuis lesquels les utilisateurs pourrons ouvrir des sessions sur le serveur de base de données.
  • dbcliconf : Définition d'un fichier de paramètrage par défaut (utile pour mysql)

Attention :

L'option les options passées dans le fichier définis dans dbcliconf rendent inutiles les options dbhost, dbport, dbroot, dbrootpwd et dbtype

L'option dbrootpwd ne prend pas un mot de passe en clair, mais un fichier qui contiens le mot de passe. Comme le .reader du LDAP.

Les options de configuration possibles pour les fichiers spécifiques aux applications (/etc/eole/eole-db.d/*.yml:

  • dbhost: définition de l'adresse du serveur de base de données utilisé par l'application (surcharge la valeur par défaut défnie dans /etc/eole/eole-db.conf)
  • dbport: définition du port d'écoute du serveur de base de données utilisé par l'application (surcharge la valeur par défaut défnie dans /etc/eole/eole-db.conf)
  • dbroot: Définition du nom de l'utilisateur ayant des droits "Administrateur" sur le serveur de base de données utilisé par l'application (surcharge la valeur par défaut défnie dans /etc/eole/eole-db.conf)
  • dbrootpwd: Définition du mot de passe part défaut de l'utilisateur définis par l'option dbroot (surcharge la valeur par défaut défnie dans /etc/eole/eole-db.conf)
  • dbname: Nom de la base de données de l'application
  • dbuser: Nom de l'utilisateur utilisé par l'application pour accéder à la base définies dans dbname
  • dbpass: Mot de passe utilisé par l'application pour l'utilisateur définis dans dbuser
  • createscript: Script SQL de création de la base de données définie dans dbname
  • sqlscripts: Scripts SQL a lancer après le script de création définis dans createscript
  • updatescripts: Scripts de mise à jour lancée sur la base définie dans dbname (lancé uniquement si la base existe déjà)
  • pwd_files : Définition des fichiers à mettre à jour après le changement du mot de passe de l'utilisateur définis dans dbuser

Note sur l'option pwd_files:

L'option pwd_files prend une liste de "dictionnaires" au sens python, cette option attend donc quelque chose comme ça :

pwd_files:
    - {file: '/var/www/html/posh/includes/config.inc.php',
       container: 'web',
       pattern: 'define("__PASS","',
       end_pattern: ');',
       owner: 'root:www-data',
       mod: '660' }
    - {file: '/usr/share/envole/eoledb/posh',
       pattern: 'dbpassPOSH="',
       owner: 'root:root',
       mod: '600' }

Voici la liste des options possibles pour les "structures" (dictionnaires au sens python) possibles pour un élément de la liste pwd_files:

  • file : Chemin complet du fichier a modifier, cette option est obligatoire
  • pattern : Modèle de ligne qui contiens le mot de passe entre ''. cette option est obligatoire
  • container: Conteneur ou ce trouve le fichier a modifier (valable uniquement en mode conteneur)
  • end_pattern: caractères a ajouter après le mot de passe sur la ligne lors de la modification du fichier
  • owner: Propriétaire, au format "user:group", a définir après la modification du mot de passe
  • mod: Droits au format unix (ex: 600) a définir après la modification du mot de passe

Note sur l'option pattern:

L'option pattern permet de définir le modèle de ligne qui contiens le mot de passe, il est important de définir la totalité de ce qui précède le mot de passe dans la ligne.

Par exemple si la ligne a changer est la suivante :

password: "JeSuiSunMauvaisPassowrd" 

Il faut définir la valeur suivante pour l'option pattern:

pwd_files:
   - {file: "/monfichier.conf",
      pattern: 'password: "'

Le " est important car lorsqu'il est définis EoleDB détermine automatiquement qu'il faut qu'il ferme les " après
la mise en place du nouveau mot de passe.

Si le pattern de votre mot de passe doit être entre des ' il faut préférer le format suivant :

pattern: "password: '" 

EoleDB gère également la fermeture des '

EoleDB détecte également les ";" en fin de ligne ce qui fait que si votre ligne de mot de passe ce termine par un ";" , il ajouteras automatiquement le ";" final. Si vous avez des problèmes avec la terminaison automatique de la ligne avec le ";" ou que votre ligne ce termine par autre chose que ";" vous pouvez utiliser l'option end_pattern.

Note sur l'option end_pattern:

Cette option permet de définir les caractères a ajouter a la fin de la ligne juste après le nouveau mot de passe.

Par exemple si votre ligne de mot de passe à le format suivant :

define('DBPASS': 'JeSuisUnMauvaisPassword');

Sans l'option end_pattern EoleDB vas produire la ligne suivante:

define('DBPASS': 'Sv;434up<'

Pour que votre ligne soit correctement fermée il faut défnir end_pattern de la manière suivante:

   end_pattern: ");",

Il faut noter que le *end_pattern * ne contiens pas le ' fermant car EoleDB gère automatiquement la fermeture des " il est donc inutil de le préciser. Avec cette définition la ligne produite par EoleDB sera:

define('DBPASS': 'Sv;434up<');