EnvoleEoleDB » Historique » Version 9
Gérald Schwartzmann, 27/01/2016 12:20
1 | 9 | Gérald Schwartzmann | h1. Comment migrer une application Envole à EoleDB |
---|---|---|---|
2 | 1 | Philippe Caseiro | |
3 | 1 | Philippe Caseiro | h2. Un mot sur EoleDB |
4 | 1 | Philippe Caseiro | |
5 | 1 | Philippe Caseiro | EoleDB est une re-implémentation de l'ancien système eole-sql avec trois objectifs principaux : |
6 | 1 | Philippe Caseiro | # Avoir 1 seul fichier de configuration. |
7 | 1 | Philippe Caseiro | # Supporter nativement plusieurs types de bases de données (mysql, postgresql, sqlite, ...). |
8 | 1 | Philippe Caseiro | # Supporter nativement l'externalisation des baes de données sur d'autres serveurs. |
9 | 1 | Philippe Caseiro | |
10 | 3 | Philippe Caseiro | EoleDB dispose d'un fichier de configuration par défaut, _*/etc/eole/eole-db.conf*_, ce fichier |
11 | 2 | Philippe Caseiro | au format yaml définis le comportement par défaut de EoleDB si aucune configuration spécifique |
12 | 2 | Philippe Caseiro | n'est définie par l'application. |
13 | 2 | Philippe Caseiro | |
14 | 2 | Philippe Caseiro | L'application dispose d'un fichier de configuration au format yaml qui surcharge le comportement |
15 | 3 | Philippe Caseiro | de EoleDB. Les fichiers de configurations sont dans _*/etc/eole/eole-db.d/*_**. |
16 | 1 | Philippe Caseiro | Les fichiers de configuration spécifiques aux applications redéfinissent le comportement de EoleDB. |
17 | 2 | Philippe Caseiro | |
18 | 3 | Philippe Caseiro | h3. Les options de configuration possibles pour _/etc/eole/eole-db.conf_: |
19 | 3 | Philippe Caseiro | |
20 | 2 | Philippe Caseiro | * *dbcont*: Définition du conteneur par défaut de la base de données en mode conteneur |
21 | 2 | Philippe Caseiro | * *dbhost*: Définition de l'adresse du serveur de base de données par défaut |
22 | 1 | Philippe Caseiro | * *dbport*: Définition du port d'écoute du serveur de base de données par défaut |
23 | 1 | Philippe Caseiro | * *dbroot*: Définition du nom de l'utilisateur ayant des droits "Administrateur" sur le serveur de base de données par défaut |
24 | 1 | Philippe Caseiro | * *dbrootpwd*: Définition du mot de passe part défaut de l'utilisateur définis par l'option *dbroot* |
25 | 1 | Philippe Caseiro | * *dbtype* : Définition du type de base de données par défaut du serveur de base de données (mysql, pgsql, sqlite, ...) |
26 | 3 | Philippe Caseiro | * *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. |
27 | 3 | Philippe Caseiro | * *dbcliconf* : Définition d'un fichier de paramètrage par défaut (utile pour mysql) |
28 | 3 | Philippe Caseiro | |
29 | 3 | Philippe Caseiro | *Attention :* |
30 | 3 | Philippe Caseiro | |
31 | 6 | Philippe Caseiro | Les options passées dans le fichier définis dans *dbcliconf* rendent inutiles les options *dbhost*, *dbport*, *dbroot*, *dbrootpwd* et *dbtype* |
32 | 3 | Philippe Caseiro | |
33 | 7 | Philippe Caseiro | 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. |
34 | 3 | Philippe Caseiro | |
35 | 3 | Philippe Caseiro | h3. Les options de configuration possibles pour les fichiers spécifiques aux applications (_/etc/eole/eole-db.d/*.yml_: |
36 | 3 | Philippe Caseiro | |
37 | 3 | Philippe Caseiro | * *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_*) |
38 | 3 | Philippe Caseiro | * *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_*) |
39 | 3 | Philippe Caseiro | * *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_*) |
40 | 3 | Philippe Caseiro | * *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_*) |
41 | 3 | Philippe Caseiro | |
42 | 3 | Philippe Caseiro | * *dbname*: Nom de la base de données de l'application |
43 | 3 | Philippe Caseiro | * *dbuser*: Nom de l'utilisateur utilisé par l'application pour accéder à la base définies dans *dbname* |
44 | 3 | Philippe Caseiro | * *dbpass*: Mot de passe utilisé par l'application pour l'utilisateur définis dans *dbuser* |
45 | 3 | Philippe Caseiro | * *createscript*: Script SQL de création de la base de données définie dans *dbname* |
46 | 3 | Philippe Caseiro | * *sqlscripts*: Scripts SQL a lancer après le script de création définis dans *createscript* |
47 | 3 | Philippe Caseiro | * *updatescripts*: Scripts de mise à jour lancée sur la base définie dans *dbname* (lancé uniquement si la base existe déjà) |
48 | 3 | Philippe Caseiro | * *pwd_files* : Définition des fichiers à mettre à jour après le changement du mot de passe de l'utilisateur définis dans *dbuser* |
49 | 3 | Philippe Caseiro | |
50 | 3 | Philippe Caseiro | Note sur l'option *pwd_files*: |
51 | 3 | Philippe Caseiro | |
52 | 3 | Philippe Caseiro | L'option pwd_files prend une liste de "dictionnaires" au sens python, cette option attend donc quelque chose comme ça : |
53 | 3 | Philippe Caseiro | |
54 | 3 | Philippe Caseiro | <pre> |
55 | 3 | Philippe Caseiro | pwd_files: |
56 | 3 | Philippe Caseiro | - {file: '/var/www/html/posh/includes/config.inc.php', |
57 | 3 | Philippe Caseiro | container: 'web', |
58 | 3 | Philippe Caseiro | pattern: 'define("__PASS","', |
59 | 3 | Philippe Caseiro | end_pattern: ');', |
60 | 3 | Philippe Caseiro | owner: 'root:www-data', |
61 | 3 | Philippe Caseiro | mod: '660' } |
62 | 3 | Philippe Caseiro | - {file: '/usr/share/envole/eoledb/posh', |
63 | 3 | Philippe Caseiro | pattern: 'dbpassPOSH="', |
64 | 3 | Philippe Caseiro | owner: 'root:root', |
65 | 3 | Philippe Caseiro | mod: '600' } |
66 | 3 | Philippe Caseiro | </pre> |
67 | 3 | Philippe Caseiro | |
68 | 3 | Philippe Caseiro | Voici la liste des options possibles pour les "structures" (dictionnaires au sens python) possibles pour un élément de la liste *pwd_files*: |
69 | 3 | Philippe Caseiro | |
70 | 3 | Philippe Caseiro | * file : Chemin complet du fichier a modifier, *cette option est obligatoire* |
71 | 3 | Philippe Caseiro | * pattern : Modèle de ligne qui contiens le mot de passe entre ''. *cette option est obligatoire* |
72 | 3 | Philippe Caseiro | * container: Conteneur ou ce trouve le fichier a modifier (valable uniquement en mode conteneur) |
73 | 3 | Philippe Caseiro | * end_pattern: caractères a ajouter après le mot de passe sur la ligne lors de la modification du fichier |
74 | 3 | Philippe Caseiro | * owner: Propriétaire, au format "user:group", a définir après la modification du mot de passe |
75 | 3 | Philippe Caseiro | * mod: Droits au format unix (ex: 600) a définir après la modification du mot de passe |
76 | 3 | Philippe Caseiro | |
77 | 3 | Philippe Caseiro | Note sur l'option *pattern*: |
78 | 3 | Philippe Caseiro | |
79 | 3 | Philippe Caseiro | 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. |
80 | 3 | Philippe Caseiro | |
81 | 3 | Philippe Caseiro | Par exemple si la ligne a changer est la suivante : |
82 | 3 | Philippe Caseiro | |
83 | 3 | Philippe Caseiro | <pre> |
84 | 3 | Philippe Caseiro | password: "JeSuiSunMauvaisPassowrd" |
85 | 3 | Philippe Caseiro | </pre> |
86 | 3 | Philippe Caseiro | |
87 | 3 | Philippe Caseiro | Il faut définir la valeur suivante pour l'option *pattern*: |
88 | 3 | Philippe Caseiro | <pre> |
89 | 3 | Philippe Caseiro | pwd_files: |
90 | 3 | Philippe Caseiro | - {file: "/monfichier.conf", |
91 | 3 | Philippe Caseiro | pattern: 'password: "' |
92 | 3 | Philippe Caseiro | </pre> |
93 | 3 | Philippe Caseiro | Le " est important car lorsqu'il est définis EoleDB détermine automatiquement qu'il faut qu'il ferme les " après |
94 | 3 | Philippe Caseiro | la mise en place du nouveau mot de passe. |
95 | 3 | Philippe Caseiro | |
96 | 3 | Philippe Caseiro | Si le pattern de votre mot de passe doit être entre des ' il faut préférer le format suivant : |
97 | 3 | Philippe Caseiro | <pre> |
98 | 3 | Philippe Caseiro | pattern: "password: '" |
99 | 3 | Philippe Caseiro | </pre> |
100 | 3 | Philippe Caseiro | |
101 | 3 | Philippe Caseiro | EoleDB gère également la fermeture des ' |
102 | 3 | Philippe Caseiro | |
103 | 3 | Philippe Caseiro | 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*. |
104 | 3 | Philippe Caseiro | |
105 | 3 | Philippe Caseiro | Note sur l'option *end_pattern*: |
106 | 3 | Philippe Caseiro | |
107 | 3 | Philippe Caseiro | 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. |
108 | 3 | Philippe Caseiro | |
109 | 3 | Philippe Caseiro | Par exemple si votre ligne de mot de passe à le format suivant : |
110 | 3 | Philippe Caseiro | <pre> |
111 | 3 | Philippe Caseiro | define('DBPASS': 'JeSuisUnMauvaisPassword'); |
112 | 3 | Philippe Caseiro | </pre> |
113 | 3 | Philippe Caseiro | |
114 | 3 | Philippe Caseiro | Sans l'option *end_pattern* EoleDB vas produire la ligne suivante: |
115 | 3 | Philippe Caseiro | |
116 | 3 | Philippe Caseiro | <pre> |
117 | 3 | Philippe Caseiro | define('DBPASS': 'Sv;434up<' |
118 | 3 | Philippe Caseiro | </pre> |
119 | 3 | Philippe Caseiro | |
120 | 3 | Philippe Caseiro | Pour que votre ligne soit correctement fermée il faut défnir *end_pattern* de la manière suivante: |
121 | 1 | Philippe Caseiro | |
122 | 3 | Philippe Caseiro | <pre> |
123 | 3 | Philippe Caseiro | end_pattern: ");", |
124 | 4 | Philippe Caseiro | </pre> |
125 | 3 | Philippe Caseiro | |
126 | 3 | Philippe Caseiro | 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: |
127 | 3 | Philippe Caseiro | |
128 | 3 | Philippe Caseiro | <pre> |
129 | 3 | Philippe Caseiro | define('DBPASS': 'Sv;434up<'); |
130 | 3 | Philippe Caseiro | </pre> |
131 | 8 | Philippe Caseiro | |
132 | 8 | Philippe Caseiro | |
133 | 8 | Philippe Caseiro | Voici un exemple tiré du projet eole-posh après migration a EoleDB : |
134 | 8 | Philippe Caseiro | |
135 | 8 | Philippe Caseiro | <pre>dbtype: mysql |
136 | 8 | Philippe Caseiro | dbname: posh |
137 | 8 | Philippe Caseiro | dbuser: posh |
138 | 8 | Philippe Caseiro | dbpass: "MOTDEPASSE" |
139 | 8 | Philippe Caseiro | createscript: "/usr/share/eole/mysql/posh/gen/posh-create-1.sql" |
140 | 8 | Philippe Caseiro | sqlscripts: ["/usr/share/eole/mysql/posh/updates/posh-update-1.sql"] |
141 | 8 | Philippe Caseiro | pwd_files: |
142 | 8 | Philippe Caseiro | - {file: '/var/www/html/posh/includes/config.inc.php', |
143 | 8 | Philippe Caseiro | container: 'web', |
144 | 8 | Philippe Caseiro | pattern: 'define("__PASS","', |
145 | 8 | Philippe Caseiro | end_pattern: ');', |
146 | 8 | Philippe Caseiro | owner: 'root:www-data', |
147 | 8 | Philippe Caseiro | mod: '660' } |
148 | 8 | Philippe Caseiro | - {file: '/usr/share/envole/eoledb/posh', |
149 | 8 | Philippe Caseiro | pattern: 'dbpassPOSH="', |
150 | 8 | Philippe Caseiro | owner: 'root:root', |
151 | 8 | Philippe Caseiro | mod: '600' } |
152 | 8 | Philippe Caseiro | - {file: '/usr/share/eole/postservice/10-posh', |
153 | 8 | Philippe Caseiro | pattern: 'POSHPASS=', |
154 | 8 | Philippe Caseiro | owner: 'root:root', |
155 | 8 | Philippe Caseiro | mod: '700' } |
156 | 8 | Philippe Caseiro | - {file: '/var/www/html/sap/config/mysql.inc.php', |
157 | 8 | Philippe Caseiro | container: 'web', |
158 | 8 | Philippe Caseiro | pattern: '$dbpwd="', |
159 | 8 | Philippe Caseiro | end_pattern: ';', |
160 | 8 | Philippe Caseiro | owner: 'root:www-data', |
161 | 8 | Philippe Caseiro | mod: '660' } |
162 | 8 | Philippe Caseiro | |
163 | 8 | Philippe Caseiro | |
164 | 8 | Philippe Caseiro | </pre> |