EnvoleEoleDB » Historique » Version 17
Gérald Schwartzmann, 25/03/2016 15:27
1 | 9 | Gérald Schwartzmann | h1. Comment migrer une application Envole à EoleDB |
---|---|---|---|
2 | 1 | Philippe Caseiro | |
3 | 10 | Philippe Caseiro | h2. Comprendre EoleDB |
4 | 1 | Philippe Caseiro | |
5 | 10 | Philippe Caseiro | EoleDB est une re-implémentation de l'ancien système eole-sql avec quatres 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 | 15 | Gérald Schwartzmann | # Supporter nativement l'externalisation des bases de données sur d'autres serveurs. |
9 | 10 | Philippe Caseiro | # Ne plus avoir fournir des scripts python pour pouvoir générer ou mettree à jour des bases de données quand de la configuration suffit largement (cf conf/updates/config.py). |
10 | 1 | Philippe Caseiro | |
11 | 17 | Gérald Schwartzmann | URL du projet : https://dev-eole.ac-dijon.fr/projects/eole-db |
12 | 10 | Philippe Caseiro | |
13 | 3 | Philippe Caseiro | EoleDB dispose d'un fichier de configuration par défaut, _*/etc/eole/eole-db.conf*_, ce fichier |
14 | 2 | Philippe Caseiro | au format yaml définis le comportement par défaut de EoleDB si aucune configuration spécifique |
15 | 2 | Philippe Caseiro | n'est définie par l'application. |
16 | 2 | Philippe Caseiro | |
17 | 14 | Gérald Schwartzmann | L'application dispose d'un fichier de configuration au format YAML qui surcharge le comportement |
18 | 3 | Philippe Caseiro | de EoleDB. Les fichiers de configurations sont dans _*/etc/eole/eole-db.d/*_**. |
19 | 1 | Philippe Caseiro | Les fichiers de configuration spécifiques aux applications redéfinissent le comportement de EoleDB. |
20 | 1 | Philippe Caseiro | |
21 | 10 | Philippe Caseiro | Actuellement EoleDB supporte complètement MySQL, le support postgresql et sqlite sont a compléter. |
22 | 10 | Philippe Caseiro | |
23 | 14 | Gérald Schwartzmann | Pour des raisons pratiques, EoleDB réalise également le changement de mots de passe dans les |
24 | 10 | Philippe Caseiro | fichiers de configuration des applications, les mots de passes sont changées a chaque lancement |
25 | 10 | Philippe Caseiro | de la commande eole_db_gen, dans le cas de EOLE au minimum cette commande est lancée a chaque reconfigure. |
26 | 10 | Philippe Caseiro | |
27 | 10 | Philippe Caseiro | Pour utiliser EoleDB il suffit de mettre en place les fichiers de configuration et de lancer la commande |
28 | 16 | Gérald Schwartzmann | *eole_db_gen* |
29 | 10 | Philippe Caseiro | |
30 | 10 | Philippe Caseiro | h3. man eole_db_gen |
31 | 10 | Philippe Caseiro | |
32 | 10 | Philippe Caseiro | Si vous lancez eole_db_gen sans aucun paramètre le programme vas utiliser les paramètres par défaut, |
33 | 10 | Philippe Caseiro | pour diverses raisons vous pouvez avoir envie d'utiliser d'autres fichiers de configurations. |
34 | 10 | Philippe Caseiro | |
35 | 10 | Philippe Caseiro | Pour ce faire vous pouvez utiliser les paramètres de la commande suivants : |
36 | 10 | Philippe Caseiro | |
37 | 10 | Philippe Caseiro | * -h, --help: Affiche le message d'aide à l'utilisation de la commande |
38 | 10 | Philippe Caseiro | * -c, --config: Définir un fichier de configuration a utiliser à la place de _/etc/eole/eole-db.conf_ |
39 | 16 | Gérald Schwartzmann | * -d, --dbdir: Définir un répertoire qui contient les fichiers de configuration des applications qui n'est pas _/etc/eole/eole-db.d/_ |
40 | 10 | Philippe Caseiro | * -b, --backup-dir: Définir un répertoire pour copier les sauvegardes des fichiers modifiés par EoleDB |
41 | 10 | Philippe Caseiro | |
42 | 10 | Philippe Caseiro | h2. Configurer EoleDB |
43 | 10 | Philippe Caseiro | |
44 | 3 | Philippe Caseiro | h3. Les options de configuration possibles pour _/etc/eole/eole-db.conf_: |
45 | 3 | Philippe Caseiro | |
46 | 2 | Philippe Caseiro | * *dbcont*: Définition du conteneur par défaut de la base de données en mode conteneur |
47 | 2 | Philippe Caseiro | * *dbhost*: Définition de l'adresse du serveur de base de données par défaut |
48 | 1 | Philippe Caseiro | * *dbport*: Définition du port d'écoute du serveur de base de données par défaut |
49 | 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 |
50 | 1 | Philippe Caseiro | * *dbrootpwd*: Définition du mot de passe part défaut de l'utilisateur définis par l'option *dbroot* |
51 | 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, ...) |
52 | 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. |
53 | 3 | Philippe Caseiro | * *dbcliconf* : Définition d'un fichier de paramètrage par défaut (utile pour mysql) |
54 | 3 | Philippe Caseiro | |
55 | 3 | Philippe Caseiro | *Attention :* |
56 | 3 | Philippe Caseiro | |
57 | 6 | Philippe Caseiro | Les options passées dans le fichier définis dans *dbcliconf* rendent inutiles les options *dbhost*, *dbport*, *dbroot*, *dbrootpwd* et *dbtype* |
58 | 3 | Philippe Caseiro | |
59 | 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. |
60 | 3 | Philippe Caseiro | |
61 | 3 | Philippe Caseiro | h3. Les options de configuration possibles pour les fichiers spécifiques aux applications (_/etc/eole/eole-db.d/*.yml_: |
62 | 3 | Philippe Caseiro | |
63 | 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_*) |
64 | 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_*) |
65 | 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_*) |
66 | 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_*) |
67 | 3 | Philippe Caseiro | |
68 | 3 | Philippe Caseiro | * *dbname*: Nom de la base de données de l'application |
69 | 3 | Philippe Caseiro | * *dbuser*: Nom de l'utilisateur utilisé par l'application pour accéder à la base définies dans *dbname* |
70 | 3 | Philippe Caseiro | * *dbpass*: Mot de passe utilisé par l'application pour l'utilisateur définis dans *dbuser* |
71 | 3 | Philippe Caseiro | * *createscript*: Script SQL de création de la base de données définie dans *dbname* |
72 | 3 | Philippe Caseiro | * *sqlscripts*: Scripts SQL a lancer après le script de création définis dans *createscript* |
73 | 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à) |
74 | 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* |
75 | 3 | Philippe Caseiro | |
76 | 3 | Philippe Caseiro | Note sur l'option *pwd_files*: |
77 | 3 | Philippe Caseiro | |
78 | 3 | Philippe Caseiro | L'option pwd_files prend une liste de "dictionnaires" au sens python, cette option attend donc quelque chose comme ça : |
79 | 3 | Philippe Caseiro | |
80 | 3 | Philippe Caseiro | <pre> |
81 | 3 | Philippe Caseiro | pwd_files: |
82 | 3 | Philippe Caseiro | - {file: '/var/www/html/posh/includes/config.inc.php', |
83 | 3 | Philippe Caseiro | container: 'web', |
84 | 3 | Philippe Caseiro | pattern: 'define("__PASS","', |
85 | 3 | Philippe Caseiro | end_pattern: ');', |
86 | 3 | Philippe Caseiro | owner: 'root:www-data', |
87 | 3 | Philippe Caseiro | mod: '660' } |
88 | 3 | Philippe Caseiro | - {file: '/usr/share/envole/eoledb/posh', |
89 | 3 | Philippe Caseiro | pattern: 'dbpassPOSH="', |
90 | 3 | Philippe Caseiro | owner: 'root:root', |
91 | 3 | Philippe Caseiro | mod: '600' } |
92 | 3 | Philippe Caseiro | </pre> |
93 | 3 | Philippe Caseiro | |
94 | 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*: |
95 | 3 | Philippe Caseiro | |
96 | 3 | Philippe Caseiro | * file : Chemin complet du fichier a modifier, *cette option est obligatoire* |
97 | 3 | Philippe Caseiro | * pattern : Modèle de ligne qui contiens le mot de passe entre ''. *cette option est obligatoire* |
98 | 3 | Philippe Caseiro | * container: Conteneur ou ce trouve le fichier a modifier (valable uniquement en mode conteneur) |
99 | 3 | Philippe Caseiro | * end_pattern: caractères a ajouter après le mot de passe sur la ligne lors de la modification du fichier |
100 | 3 | Philippe Caseiro | * owner: Propriétaire, au format "user:group", a définir après la modification du mot de passe |
101 | 3 | Philippe Caseiro | * mod: Droits au format unix (ex: 600) a définir après la modification du mot de passe |
102 | 3 | Philippe Caseiro | |
103 | 3 | Philippe Caseiro | Note sur l'option *pattern*: |
104 | 3 | Philippe Caseiro | |
105 | 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. |
106 | 3 | Philippe Caseiro | |
107 | 3 | Philippe Caseiro | Par exemple si la ligne a changer est la suivante : |
108 | 3 | Philippe Caseiro | |
109 | 3 | Philippe Caseiro | <pre> |
110 | 3 | Philippe Caseiro | password: "JeSuiSunMauvaisPassowrd" |
111 | 3 | Philippe Caseiro | </pre> |
112 | 3 | Philippe Caseiro | |
113 | 3 | Philippe Caseiro | Il faut définir la valeur suivante pour l'option *pattern*: |
114 | 3 | Philippe Caseiro | <pre> |
115 | 3 | Philippe Caseiro | pwd_files: |
116 | 3 | Philippe Caseiro | - {file: "/monfichier.conf", |
117 | 3 | Philippe Caseiro | pattern: 'password: "' |
118 | 3 | Philippe Caseiro | </pre> |
119 | 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 |
120 | 3 | Philippe Caseiro | la mise en place du nouveau mot de passe. |
121 | 3 | Philippe Caseiro | |
122 | 3 | Philippe Caseiro | Si le pattern de votre mot de passe doit être entre des ' il faut préférer le format suivant : |
123 | 3 | Philippe Caseiro | <pre> |
124 | 3 | Philippe Caseiro | pattern: "password: '" |
125 | 3 | Philippe Caseiro | </pre> |
126 | 3 | Philippe Caseiro | |
127 | 3 | Philippe Caseiro | EoleDB gère également la fermeture des ' |
128 | 3 | Philippe Caseiro | |
129 | 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*. |
130 | 3 | Philippe Caseiro | |
131 | 3 | Philippe Caseiro | Note sur l'option *end_pattern*: |
132 | 3 | Philippe Caseiro | |
133 | 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. |
134 | 3 | Philippe Caseiro | |
135 | 3 | Philippe Caseiro | Par exemple si votre ligne de mot de passe à le format suivant : |
136 | 3 | Philippe Caseiro | <pre> |
137 | 3 | Philippe Caseiro | define('DBPASS': 'JeSuisUnMauvaisPassword'); |
138 | 3 | Philippe Caseiro | </pre> |
139 | 3 | Philippe Caseiro | |
140 | 3 | Philippe Caseiro | Sans l'option *end_pattern* EoleDB vas produire la ligne suivante: |
141 | 3 | Philippe Caseiro | |
142 | 3 | Philippe Caseiro | <pre> |
143 | 3 | Philippe Caseiro | define('DBPASS': 'Sv;434up<' |
144 | 3 | Philippe Caseiro | </pre> |
145 | 3 | Philippe Caseiro | |
146 | 3 | Philippe Caseiro | Pour que votre ligne soit correctement fermée il faut défnir *end_pattern* de la manière suivante: |
147 | 1 | Philippe Caseiro | |
148 | 3 | Philippe Caseiro | <pre> |
149 | 3 | Philippe Caseiro | end_pattern: ");", |
150 | 4 | Philippe Caseiro | </pre> |
151 | 3 | Philippe Caseiro | |
152 | 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: |
153 | 3 | Philippe Caseiro | |
154 | 3 | Philippe Caseiro | <pre> |
155 | 3 | Philippe Caseiro | define('DBPASS': 'Sv;434up<'); |
156 | 3 | Philippe Caseiro | </pre> |
157 | 8 | Philippe Caseiro | |
158 | 8 | Philippe Caseiro | |
159 | 8 | Philippe Caseiro | Voici un exemple tiré du projet eole-posh après migration a EoleDB : |
160 | 8 | Philippe Caseiro | |
161 | 13 | Philippe Caseiro | <pre> |
162 | 13 | Philippe Caseiro | dbtype: mysql |
163 | 8 | Philippe Caseiro | dbname: posh |
164 | 8 | Philippe Caseiro | dbuser: posh |
165 | 8 | Philippe Caseiro | dbpass: "MOTDEPASSE" |
166 | 8 | Philippe Caseiro | createscript: "/usr/share/eole/mysql/posh/gen/posh-create-1.sql" |
167 | 8 | Philippe Caseiro | sqlscripts: ["/usr/share/eole/mysql/posh/updates/posh-update-1.sql"] |
168 | 8 | Philippe Caseiro | pwd_files: |
169 | 8 | Philippe Caseiro | - {file: '/var/www/html/posh/includes/config.inc.php', |
170 | 8 | Philippe Caseiro | container: 'web', |
171 | 8 | Philippe Caseiro | pattern: 'define("__PASS","', |
172 | 8 | Philippe Caseiro | end_pattern: ');', |
173 | 8 | Philippe Caseiro | owner: 'root:www-data', |
174 | 8 | Philippe Caseiro | mod: '660' } |
175 | 8 | Philippe Caseiro | - {file: '/usr/share/envole/eoledb/posh', |
176 | 8 | Philippe Caseiro | pattern: 'dbpassPOSH="', |
177 | 8 | Philippe Caseiro | owner: 'root:root', |
178 | 8 | Philippe Caseiro | mod: '600' } |
179 | 8 | Philippe Caseiro | - {file: '/usr/share/eole/postservice/10-posh', |
180 | 8 | Philippe Caseiro | pattern: 'POSHPASS=', |
181 | 8 | Philippe Caseiro | owner: 'root:root', |
182 | 8 | Philippe Caseiro | mod: '700' } |
183 | 8 | Philippe Caseiro | - {file: '/var/www/html/sap/config/mysql.inc.php', |
184 | 8 | Philippe Caseiro | container: 'web', |
185 | 8 | Philippe Caseiro | pattern: '$dbpwd="', |
186 | 8 | Philippe Caseiro | end_pattern: ';', |
187 | 8 | Philippe Caseiro | owner: 'root:www-data', |
188 | 8 | Philippe Caseiro | mod: '660' } |
189 | 8 | Philippe Caseiro | |
190 | 1 | Philippe Caseiro | |
191 | 1 | Philippe Caseiro | </pre> |
192 | 10 | Philippe Caseiro | |
193 | 10 | Philippe Caseiro | |
194 | 10 | Philippe Caseiro | h2. Migrer une application vers EoleDB. |
195 | 10 | Philippe Caseiro | |
196 | 1 | Philippe Caseiro | Pour migrer une application vers EoleDB le principe est plutôt simple, même si le faire n'est pas si simple. |
197 | 13 | Philippe Caseiro | |
198 | 1 | Philippe Caseiro | En bref si votre application répond au standard _eole-skeletor_ il suffit de remplacer les fichiers de configuration |
199 | 10 | Philippe Caseiro | du répertoire *sql* de votre dépôt par un seul et unique fichier de configuration au format yaml avec les options |
200 | 13 | Philippe Caseiro | à disposition dans EoleDB. |
201 | 10 | Philippe Caseiro | |
202 | 10 | Philippe Caseiro | Oui sur le papier c'est simple, et cela peut être très très simple pour reproduire ce que vous avez aujourd'hui |
203 | 10 | Philippe Caseiro | dans vos dépôts il suffit de transcrire les fichiers suivants dans un seul et unique yaml : |
204 | 10 | Philippe Caseiro | * conf/updates/config.py |
205 | 10 | Philippe Caseiro | * conf/gen/mon_apply.py |
206 | 10 | Philippe Caseiro | * conf/passwords/mon_apply.ini |
207 | 10 | Philippe Caseiro | |
208 | 10 | Philippe Caseiro | Par exemple pour l'application taskfreak, voici le yaml qu'il faut mettre dans _/etc/eole/eole-db.d/_ pour rempalcer tous les anciens fichiers de configuration (valable pour un scribe): |
209 | 10 | Philippe Caseiro | |
210 | 10 | Philippe Caseiro | <pre> |
211 | 10 | Philippe Caseiro | dbtype: mysql |
212 | 10 | Philippe Caseiro | dbname: taskfreak |
213 | 10 | Philippe Caseiro | dbuser: taskfreak |
214 | 10 | Philippe Caseiro | dbpass: "Un mot de passe !!" |
215 | 10 | Philippe Caseiro | createscript: "/usr/share/eole/mysql/taskfreak/gen/taskfreak-create.sql" |
216 | 10 | Philippe Caseiro | pwd_files: |
217 | 10 | Philippe Caseiro | - {file: '/var/www/html/taskfreak/include/config.php', |
218 | 10 | Philippe Caseiro | pattern: '$dbpass="', |
219 | 10 | Philippe Caseiro | owner: 'www-data:www-data', |
220 | 10 | Philippe Caseiro | mod: '600'} |
221 | 10 | Philippe Caseiro | </pre> |
222 | 10 | Philippe Caseiro | |
223 | 10 | Philippe Caseiro | Pas une ligne de python un seul fichier. |
224 | 10 | Philippe Caseiro | |
225 | 10 | Philippe Caseiro | La ou l'affaire deviens complexe c'est lorsqu'on a envie que notre application bénéficie de toutes les possibilités de EoleDB et surtout de la base de données externalisée. |
226 | 10 | Philippe Caseiro | |
227 | 10 | Philippe Caseiro | Dans le cas de l'exemple il suffit de fournir un template simple pour générer cette configuration, voir même de la fournir en dur en l'étât. |
228 | 10 | Philippe Caseiro | |
229 | 10 | Philippe Caseiro | Pour comprendre pourquoi supporter les divers modes de base de données offerts par EoleDB est complexe il faut comprendre quels sont les dits modes. |
230 | 10 | Philippe Caseiro | |
231 | 10 | Philippe Caseiro | h3. Possibilités offertes par EoleDB aux applications. |
232 | 10 | Philippe Caseiro | |
233 | 10 | Philippe Caseiro | h4. Le mode "default" ! |
234 | 10 | Philippe Caseiro | |
235 | 10 | Philippe Caseiro | La première et la plus simple est le mode "défault" ce mode consiste a dire, je fait confiance a la configuration globale de EoleDB et mon application est très heureuse avec ça. |
236 | 10 | Philippe Caseiro | |
237 | 10 | Philippe Caseiro | Ce qui ce traduit par l'exemple de taskfreak dans la partie précédente. Dans cette configuration : |
238 | 10 | Philippe Caseiro | |
239 | 10 | Philippe Caseiro | <pre> |
240 | 10 | Philippe Caseiro | dbtype: mysql |
241 | 10 | Philippe Caseiro | dbname: taskfreak |
242 | 10 | Philippe Caseiro | dbuser: taskfreak |
243 | 10 | Philippe Caseiro | dbpass: "Un mot de passe !!" |
244 | 10 | Philippe Caseiro | createscript: "/usr/share/eole/mysql/taskfreak/gen/taskfreak-create.sql" |
245 | 10 | Philippe Caseiro | pwd_files: |
246 | 10 | Philippe Caseiro | - {file: '/var/www/html/taskfreak/include/config.php', |
247 | 10 | Philippe Caseiro | pattern: '$dbpass="', |
248 | 10 | Philippe Caseiro | owner: 'www-data:www-data', |
249 | 10 | Philippe Caseiro | mod: '600'} |
250 | 10 | Philippe Caseiro | </pre> |
251 | 10 | Philippe Caseiro | |
252 | 10 | Philippe Caseiro | L'application ne prend aucune liberté avec la configuration de EoleDB et ce repose exclusivement sur ce qui est définis par défaut dans /etc/eole/eole-db.conf. |
253 | 10 | Philippe Caseiro | |
254 | 10 | Philippe Caseiro | h4. Le mode "local" ! |
255 | 10 | Philippe Caseiro | Le second mode est le mode dit "local" dans ce mode l'application a envie de forcer l'utilisation d'un serveur local, pour ce faire on vas devoir générer la configuration suivante : |
256 | 10 | Philippe Caseiro | |
257 | 10 | Philippe Caseiro | <pre> |
258 | 10 | Philippe Caseiro | --- |
259 | 10 | Philippe Caseiro | dbhost: 127.0.0.1 |
260 | 10 | Philippe Caseiro | dbtype: mysql |
261 | 10 | Philippe Caseiro | dbname: taskfreak |
262 | 10 | Philippe Caseiro | dbuser: taskfreak |
263 | 10 | Philippe Caseiro | dbpass: "task;Freak" |
264 | 10 | Philippe Caseiro | client_hosts: ["127.0.0.1", "localhost"] |
265 | 10 | Philippe Caseiro | createscript: "/usr/share/eole/mysql/taskfreak/gen/taskfreak-create.sql" |
266 | 10 | Philippe Caseiro | pwd_files: |
267 | 10 | Philippe Caseiro | - {file: '/var/www/html/taskfreak/include/config.php', |
268 | 10 | Philippe Caseiro | pattern: '$dbpass="', |
269 | 10 | Philippe Caseiro | owner: 'www-data:www-data', |
270 | 10 | Philippe Caseiro | mod: '600' } |
271 | 10 | Philippe Caseiro | </pre> |
272 | 10 | Philippe Caseiro | |
273 | 10 | Philippe Caseiro | On vois déjà les différences entre les deux modes. Vous remarquerez que nous ne définissons pas de *dbroot* ni de *dbrootpwd*, c'est pour une raison simple, Sur un serveur Eole, EoleDB vas utiliser le fichier de configuration par défaut fournis par ubuntu pour ce connecter a la base de données et effectué les opérations, donc ces options ne sont pas nécessaires, cependant vous pouvez les définir si EoleDB ne fonctionne pas sur un serveur Eole. |
274 | 10 | Philippe Caseiro | |
275 | 10 | Philippe Caseiro | Ici l'application dit a EoleDB d'ignorer la configuration définie dans le fichier de configuration _/etc/eole/eole-db.conf_ pour utiliser le serveur local, donc si vous avez définis un serveur externe dans la configuration par défaut la base seras créer sur le serveur local. |
276 | 10 | Philippe Caseiro | |
277 | 10 | Philippe Caseiro | Nous avons donc deux cas qui demandent des configurations différentes et il reste un troisième mode, pour que l'application puisse définir son propre serveur de base de données externe et une fois de plus dire a EoleDB de ne pas appliquer la configuration par défaut. |
278 | 10 | Philippe Caseiro | |
279 | 10 | Philippe Caseiro | h4. Le mode "externe"! |
280 | 10 | Philippe Caseiro | |
281 | 10 | Philippe Caseiro | Dans ce mode l'application définie complètement un serveur externe de base de données. Voici a quoi la configuration pour ce mode pour l'application taskfreak : |
282 | 10 | Philippe Caseiro | |
283 | 10 | Philippe Caseiro | <pre> |
284 | 10 | Philippe Caseiro | --- |
285 | 10 | Philippe Caseiro | dbhost: 192.168.45.34 |
286 | 10 | Philippe Caseiro | dbport: 3309 |
287 | 10 | Philippe Caseiro | dbroot: adminDB |
288 | 10 | Philippe Caseiro | dbrootpwd: /root/.secrets-mydb |
289 | 10 | Philippe Caseiro | dbtype: mysql |
290 | 10 | Philippe Caseiro | dbname: taskfreak |
291 | 10 | Philippe Caseiro | dbuser: taskfreak |
292 | 10 | Philippe Caseiro | dbpass: "task;Freak" |
293 | 10 | Philippe Caseiro | client_hosts: ["127.0.0.1", "localhost", "192.168.0.14" ] |
294 | 10 | Philippe Caseiro | createscript: "/usr/share/eole/mysql/taskfreak/gen/taskfreak-create.sql" |
295 | 10 | Philippe Caseiro | pwd_files: |
296 | 10 | Philippe Caseiro | - {file: '/var/www/html/taskfreak/include/config.php', |
297 | 10 | Philippe Caseiro | pattern: '$dbpass="', |
298 | 10 | Philippe Caseiro | owner: 'www-data:www-data', |
299 | 10 | Philippe Caseiro | mod: '600' } |
300 | 10 | Philippe Caseiro | </pre> |
301 | 10 | Philippe Caseiro | |
302 | 10 | Philippe Caseiro | Ici on définis des nouvelles valeurs pour *dbhost*, *dbport*, *dbroot*, *dbrootpwd*, on ajoute également l'adresse IP de la carte réseaux qui communique avec le serveur de base de données dans la liste *client_hosts*, attention si on n'ajoute pas cette adresse IP la connexion avec l'utilisateur définis dans *dbname* ne sera pas fonctionnelle. |
303 | 10 | Philippe Caseiro | |
304 | 10 | Philippe Caseiro | Nous avons donc trois possibilités de configuration pour EoleDB et si nous voulons offrir les trois possibilités aux utilisateurs, il n'y a qu'une seule solution créer un template pour le fichier de configuration au foramt yaml de notre application. |
305 | 10 | Philippe Caseiro | |
306 | 10 | Philippe Caseiro | Il existe d'autres possibilités qui ne sont pas développées ici, par exemple permettre la création de plusieurs bases de données une une seule application, mais ces usages relèves plus de nos délires de développeurs Eole/Envole que de la réalité du besoin. Nous nous sommes concentrés sur les 3 cas qui nous semblais être les plus utiles aux utilisateurs. |
307 | 10 | Philippe Caseiro | |
308 | 10 | Philippe Caseiro | Avant d'entrer dans le vif du sujet il faut malgré tout parlé d'un "quatrième" cas, le mode conteneur et oui si on souhaite que notre application soit fonctionnelle sur un module comme AmonÉcole lorsque l'utilisateur selection le mode "local" il faut adapater la configuration. |
309 | 10 | Philippe Caseiro | |
310 | 10 | Philippe Caseiro | Donc pour créer ce nouveau template nous allons avoir besoin de créer de nouvelles variables. |
311 | 10 | Philippe Caseiro | |
312 | 10 | Philippe Caseiro | h3. Mise à jour du dictionnaire pour le support des 3 modes |
313 | 10 | Philippe Caseiro | |
314 | 10 | Philippe Caseiro | Afin de simplifier les choses pour l'utilisateur, nous avons pris le partis de mettre toutes les variables dans une |
315 | 10 | Philippe Caseiro | nouvelle famille (donc nouvel onglet dans gen_connfig) en mode expert. |
316 | 10 | Philippe Caseiro | |
317 | 10 | Philippe Caseiro | <pre> |
318 | 10 | Philippe Caseiro | <family name='taskfreak' mode='expert'> |
319 | 10 | Philippe Caseiro | </family> |
320 | 10 | Philippe Caseiro | </pre> |
321 | 10 | Philippe Caseiro | |
322 | 10 | Philippe Caseiro | La première variable de cette famille vas servir a permettre à l'utilisateur de faire le choix du mode. |
323 | 10 | Philippe Caseiro | Voici la dite variable pour taskfreak: |
324 | 10 | Philippe Caseiro | |
325 | 10 | Philippe Caseiro | <pre> |
326 | 10 | Philippe Caseiro | <variable name='tf_db_mode' type='string' description='Serveur de bases de données à utiliser'/> |
327 | 10 | Philippe Caseiro | </pre> |
328 | 10 | Philippe Caseiro | |
329 | 10 | Philippe Caseiro | Cetta variable est une simple liste des trois modes, il faut donc lui ajouter une contrainte : |
330 | 10 | Philippe Caseiro | |
331 | 10 | Philippe Caseiro | <pre> |
332 | 10 | Philippe Caseiro | <check name='valid_enum' target='tf_db_mode'> |
333 | 10 | Philippe Caseiro | <param>['default', 'externe', 'local']</param> |
334 | 10 | Philippe Caseiro | </check> |
335 | 10 | Philippe Caseiro | </pre> |
336 | 10 | Philippe Caseiro | |
337 | 10 | Philippe Caseiro | Ensuite il nous faut une variable pour stocker l'adresse du serveur de base de données en mode "externe": |
338 | 10 | Philippe Caseiro | |
339 | 10 | Philippe Caseiro | <pre> |
340 | 10 | Philippe Caseiro | <variable type='string' name='tf_dbserver' description='Adresse du serveur de base de données'/> |
341 | 10 | Philippe Caseiro | </pre> |
342 | 10 | Philippe Caseiro | |
343 | 10 | Philippe Caseiro | Puis une variable pour le port d'écoute du serveur en mode "externe" : |
344 | 10 | Philippe Caseiro | |
345 | 10 | Philippe Caseiro | <pre> |
346 | 10 | Philippe Caseiro | <variable type='number' name='tf_dbport' description="Port d'écoute du serveur de base de données"/> |
347 | 10 | Philippe Caseiro | </pre> |
348 | 10 | Philippe Caseiro | |
349 | 10 | Philippe Caseiro | Une variable pour le nom de l'utilisateur ayant des droits administrateur sur le serveur de base de données en mode externe: |
350 | 10 | Philippe Caseiro | <pre> |
351 | 10 | Philippe Caseiro | <variable type='string' name='tf_dbuser' description='Utilisateur du serveur de base de données'/> |
352 | 10 | Philippe Caseiro | </pre> |
353 | 10 | Philippe Caseiro | |
354 | 10 | Philippe Caseiro | Une variable pour permettre spécifier le fichier de mot de passe pour l'utilisateur définis précédement : |
355 | 10 | Philippe Caseiro | <pre> |
356 | 10 | Philippe Caseiro | <variable type='string' name='tf_dbpass' description='Fichier de mot de passe du serveur'/> |
357 | 10 | Philippe Caseiro | </pre> |
358 | 10 | Philippe Caseiro | |
359 | 10 | Philippe Caseiro | Enfin il nous faut une variable pour permettre de saisir les adresse IP qui peuvent ouvrir des sessions sur le serveur distant: |
360 | 10 | Philippe Caseiro | |
361 | 10 | Philippe Caseiro | <pre> |
362 | 10 | Philippe Caseiro | <variable type='string' name='tf_allow_hosts' description="Hôtes authorisés à utiliser la base de données" multi='true'/> |
363 | 10 | Philippe Caseiro | </pre> |
364 | 10 | Philippe Caseiro | |
365 | 10 | Philippe Caseiro | Cette dernière est une liste et donc avec l'option "multi=true" |
366 | 10 | Philippe Caseiro | <pre> |
367 | 11 | Philippe Caseiro | |
368 | 11 | Philippe Caseiro | Il est évident qu'il faut des contraintes pour régler l'affichage ou non des options dans gen_config, en effet si l'utilisateur fait le choix |
369 | 11 | Philippe Caseiro | "local" aucun besoin d'afficher toutes les variables dans l'interface : |
370 | 11 | Philippe Caseiro | |
371 | 11 | Philippe Caseiro | Voici les conditions pour taskfreak : |
372 | 11 | Philippe Caseiro | |
373 | 11 | Philippe Caseiro | Donc pour taskfreak voici la première containte : "Pas de EoleDB, pas de taskfreak !" |
374 | 11 | Philippe Caseiro | <pre> |
375 | 11 | Philippe Caseiro | <constraints> |
376 | 11 | Philippe Caseiro | <condition name='disabled_if_in' source='activer_eoledb'> |
377 | 11 | Philippe Caseiro | <param>non</param> |
378 | 11 | Philippe Caseiro | <target type='variable'>activer_taskfreak</target> |
379 | 11 | Philippe Caseiro | </condition> |
380 | 11 | Philippe Caseiro | </pre> |
381 | 11 | Philippe Caseiro | |
382 | 11 | Philippe Caseiro | La traditionnelle "activer_monapply": |
383 | 11 | Philippe Caseiro | </pre> |
384 | 11 | Philippe Caseiro | <condition name='hidden_if_in' source='activer_taskfreak'> |
385 | 11 | Philippe Caseiro | <param>non</param> |
386 | 11 | Philippe Caseiro | <target type='filelist'>taskfreak</target> |
387 | 11 | Philippe Caseiro | <target type='servicelist'>taskfreak</target> |
388 | 11 | Philippe Caseiro | </condition> |
389 | 11 | Philippe Caseiro | |
390 | 11 | Philippe Caseiro | </pre> |
391 | 11 | Philippe Caseiro | |
392 | 11 | Philippe Caseiro | Le valid_enum déjà évoqué plus haut pour la liste des choix possible, un rappel ne fait jamais de mal |
393 | 11 | Philippe Caseiro | <pre> |
394 | 11 | Philippe Caseiro | <check name='valid_enum' target='tf_db_mode'> |
395 | 11 | Philippe Caseiro | <param>['default', 'externe', 'local']</param> |
396 | 11 | Philippe Caseiro | </check> |
397 | 11 | Philippe Caseiro | |
398 | 11 | Philippe Caseiro | </pre> |
399 | 11 | Philippe Caseiro | |
400 | 11 | Philippe Caseiro | |
401 | 11 | Philippe Caseiro | Voila la partie affichage des dites nouvelles variables, donc ici nous allons cacher les variables : |
402 | 11 | Philippe Caseiro | * tf_dbserver, |
403 | 11 | Philippe Caseiro | * tf_dbuser, |
404 | 11 | Philippe Caseiro | * tf_dbport, |
405 | 11 | Philippe Caseiro | * tf_dbpass, |
406 | 11 | Philippe Caseiro | |
407 | 11 | Philippe Caseiro | si le mode choisis par l'utilisateur est "local". |
408 | 11 | Philippe Caseiro | |
409 | 11 | Philippe Caseiro | <pre> |
410 | 11 | Philippe Caseiro | <condition name='disabled_if_in' source='tf_db_mode'> |
411 | 11 | Philippe Caseiro | <param>local</param> |
412 | 11 | Philippe Caseiro | <target type='variable'>tf_dbserver</target> |
413 | 11 | Philippe Caseiro | <target type='variable'>tf_dbuser</target> |
414 | 11 | Philippe Caseiro | <target type='variable'>tf_dbport</target> |
415 | 11 | Philippe Caseiro | <target type='variable'>tf_dbpass</target> |
416 | 11 | Philippe Caseiro | </condition> |
417 | 11 | Philippe Caseiro | </pre> |
418 | 11 | Philippe Caseiro | |
419 | 12 | Philippe Caseiro | Même opération si le mode est "default" sauf qu'on cache en plus la liste des hôtes a autorisé qui doit être définie globalement dans ce cas. |
420 | 11 | Philippe Caseiro | |
421 | 11 | Philippe Caseiro | <pre> |
422 | 11 | Philippe Caseiro | <condition name='disabled_if_in' source='tf_db_mode'> |
423 | 11 | Philippe Caseiro | <param>default</param> |
424 | 11 | Philippe Caseiro | <target type='variable'>tf_dbserver</target> |
425 | 11 | Philippe Caseiro | <target type='variable'>tf_dbuser</target> |
426 | 11 | Philippe Caseiro | <target type='variable'>tf_dbport</target> |
427 | 1 | Philippe Caseiro | <target type='variable'>tf_dbpass</target> |
428 | 12 | Philippe Caseiro | <target type='variable'>tf_allow_hosts</target> |
429 | 11 | Philippe Caseiro | </condition> |
430 | 11 | Philippe Caseiro | </constraints> |
431 | 11 | Philippe Caseiro | </pre> |
432 | 11 | Philippe Caseiro | |
433 | 11 | Philippe Caseiro | Voila notre dictionnaire est à jour, nous allons pouvoir passer au tempalte de la configuration EoleDB. |
434 | 11 | Philippe Caseiro | |
435 | 11 | Philippe Caseiro | h3. Création du template pour le support des 3 modes et du mode bonus (support des conteneurs). |
436 | 11 | Philippe Caseiro | |
437 | 11 | Philippe Caseiro | Attention n'oubliez pas de déclarer votre nouveau template dans le dictionnaire. |
438 | 11 | Philippe Caseiro | |
439 | 11 | Philippe Caseiro | Ne perdons pas plus de temps et allons dans le code du tempalte. |
440 | 11 | Philippe Caseiro | |
441 | 11 | Philippe Caseiro | Nous allons avoir besoin de connaitre le mode choisis par l'utilisateur plusieurs fois dans le template |
442 | 11 | Philippe Caseiro | commençons donc par déclarer une variable de template nommée "dmode" |
443 | 11 | Philippe Caseiro | <pre> |
444 | 11 | Philippe Caseiro | %set dmode = %%getVar('tf_db_mode','non') |
445 | 11 | Philippe Caseiro | </pre> |
446 | 11 | Philippe Caseiro | |
447 | 11 | Philippe Caseiro | Vérifions d'abord si le mode est "externe", si c'est le cas nous allons utiliser les nouvelles variables |
448 | 11 | Philippe Caseiro | pour définir les configurations pour dbhost, dbroot, dbrootpwd ... Si le mode est "local" nous forçons simplement |
449 | 11 | Philippe Caseiro | la valeur de dbhost à 127.0.0.1. Pour le mode "default" il n'y a rien à faire. |
450 | 11 | Philippe Caseiro | |
451 | 11 | Philippe Caseiro | </pre> |
452 | 11 | Philippe Caseiro | %if %%dmode == "externe" |
453 | 11 | Philippe Caseiro | dbhost: %%tf_dbserver |
454 | 11 | Philippe Caseiro | dbport: %%tf_dbport |
455 | 11 | Philippe Caseiro | dbroot: %%tf_dbuser |
456 | 11 | Philippe Caseiro | dbrootpwd: %%tf_dbpass |
457 | 11 | Philippe Caseiro | %else if %%dmode == "local" |
458 | 11 | Philippe Caseiro | dbhost: 127.0.0.1 |
459 | 11 | Philippe Caseiro | %end if |
460 | 11 | Philippe Caseiro | </pre> |
461 | 11 | Philippe Caseiro | |
462 | 11 | Philippe Caseiro | Cette partie du tempalte est commune a tous les modes : |
463 | 11 | Philippe Caseiro | |
464 | 11 | Philippe Caseiro | <pre> |
465 | 11 | Philippe Caseiro | dbtype: mysql |
466 | 11 | Philippe Caseiro | dbname: taskfreak |
467 | 11 | Philippe Caseiro | dbuser: taskfreak |
468 | 11 | Philippe Caseiro | dbpass: "task;Freak" |
469 | 1 | Philippe Caseiro | </pre> |
470 | 11 | Philippe Caseiro | |
471 | 12 | Philippe Caseiro | Il nous faut maintenant résoudre les problèmes d'autorisations à joindre la base. On ne vas pas demander a l'utilisateur de saisir 127.0.0.1 lorsqu'il prend le mode local alors |
472 | 1 | Philippe Caseiro | que nous savons bien que cette valeur est obligatoire. |
473 | 11 | Philippe Caseiro | |
474 | 12 | Philippe Caseiro | Avant tout on récupère la liste saisie par l'utilisateur pour la stocker dans une variable de template : |
475 | 1 | Philippe Caseiro | |
476 | 12 | Philippe Caseiro | <pre> |
477 | 12 | Philippe Caseiro | %set allow_hosts = %%getVar('tf_allow_hosts', '') |
478 | 1 | Philippe Caseiro | </pre> |
479 | 12 | Philippe Caseiro | |
480 | 12 | Philippe Caseiro | Ensuite on vérifie si le mode est local, si c'est le cas on ajoute le début de la ligne "client_hots" : |
481 | 12 | Philippe Caseiro | |
482 | 12 | Philippe Caseiro | <pre> |
483 | 1 | Philippe Caseiro | %if %%dmode == "local" |
484 | 12 | Philippe Caseiro | client_hosts: ["127.0.0.1", "localhost" %slurp |
485 | 12 | Philippe Caseiro | </pre> |
486 | 12 | Philippe Caseiro | |
487 | 12 | Philippe Caseiro | Si ce n'est pas le cas et que le mode est "externe" on ajoute le début de la ligne client_host pour le cas du mode "externe" : |
488 | 12 | Philippe Caseiro | |
489 | 12 | Philippe Caseiro | <pre> |
490 | 1 | Philippe Caseiro | %else if %%dmode == "externe" |
491 | 12 | Philippe Caseiro | client_hosts: ["%%adresse_ip_eth0" %slurp |
492 | 12 | Philippe Caseiro | %end if |
493 | 12 | Philippe Caseiro | </pre> |
494 | 12 | Philippe Caseiro | |
495 | 12 | Philippe Caseiro | Maintenant que nous avons le bon début de ligne il nous faut la bonne fin, On vérifie que le mode choisi par l'utilisateur n'est pas "défault" dans ce cas la il n'y a pas de début de ligne donc pas besoin de fin de ligne. Si le mode est local ou externe et que l'utilisateur n'a pas remplis la liste des autorisations on ferme la configuration avec le "]" sinon on ajoute tous les éléments de la liste à la configuration et on ferme avec le "]". |
496 | 12 | Philippe Caseiro | |
497 | 12 | Philippe Caseiro | <pre> |
498 | 12 | Philippe Caseiro | %if %%dmode != "default" |
499 | 12 | Philippe Caseiro | %if %%is_empty(%%allow_hosts) |
500 | 11 | Philippe Caseiro | ] |
501 | 11 | Philippe Caseiro | %else |
502 | 12 | Philippe Caseiro | %for %%hst in %%allow_hosts |
503 | 12 | Philippe Caseiro | ,"%%hst" %slurp |
504 | 12 | Philippe Caseiro | %end for |
505 | 12 | Philippe Caseiro | ] |
506 | 1 | Philippe Caseiro | %end if |
507 | 1 | Philippe Caseiro | %end if |
508 | 1 | Philippe Caseiro | </pre> |
509 | 1 | Philippe Caseiro | |
510 | 1 | Philippe Caseiro | Cette partie est également commune a tous les modes |
511 | 11 | Philippe Caseiro | |
512 | 11 | Philippe Caseiro | <pre> |
513 | 11 | Philippe Caseiro | createscript: "/usr/share/eole/mysql/taskfreak/gen/taskfreak-create.sql" |
514 | 11 | Philippe Caseiro | </pre> |
515 | 11 | Philippe Caseiro | |
516 | 12 | Philippe Caseiro | Nous y sommes presque, il ne nous reste plus qu'a définir les fichiers de configuration ou le mot de passe doit être mis à jour. |
517 | 12 | Philippe Caseiro | Le mode bonus fait son entrée, en effet les fichiers de configuration des applications sont bien souvent dans un conteneur |
518 | 12 | Philippe Caseiro | la plus part du temps dans le conteneur web. Il faut donc prendre en compte ce petit détail. |
519 | 11 | Philippe Caseiro | |
520 | 12 | Philippe Caseiro | Ici on vérifie que le serveur est en mode conteneur avec la variable mode_conteneur_actif, si le serveur n'est pas en mode |
521 | 12 | Philippe Caseiro | conteneur on indique le chemin complet du fichier à modifier, sinon il faut utiliser la variable "container_path_NOMGROUPECONTENEUR" (ici container_path_reseau) |
522 | 12 | Philippe Caseiro | pour connaître l'emplacement de la racine du conteneur, chaque groupe de conteneur dispose d'une variable "container_path_NOMGROUPECONTENEUR", il faut juste savoir |
523 | 12 | Philippe Caseiro | que le conteneur web est dans le groupe réseau et le tour est joué pour taskfreak. |
524 | 12 | Philippe Caseiro | |
525 | 1 | Philippe Caseiro | <pre> |
526 | 1 | Philippe Caseiro | pwd_files: |
527 | 1 | Philippe Caseiro | %if %%getVar('mode_conteneur_actif','non') == 'non' |
528 | 1 | Philippe Caseiro | - {file: '/var/www/html/taskfreak/include/config.php', |
529 | 1 | Philippe Caseiro | %else |
530 | 1 | Philippe Caseiro | - {file: '%%container_path_reseau/var/www/html/taskfreak/include/config.php', |
531 | 1 | Philippe Caseiro | %end if |
532 | 1 | Philippe Caseiro | pattern: '$dbpass="', |
533 | 1 | Philippe Caseiro | owner: 'www-data:www-data', |
534 | 1 | Philippe Caseiro | mod: '600' } |
535 | 12 | Philippe Caseiro | </pre> |
536 | 12 | Philippe Caseiro | |
537 | 12 | Philippe Caseiro | Cette variante est également possible : |
538 | 12 | Philippe Caseiro | |
539 | 12 | Philippe Caseiro | <pre> |
540 | 12 | Philippe Caseiro | pwd_files: |
541 | 12 | Philippe Caseiro | - {file: '%%container_path_reseau/var/www/html/taskfreak/include/config.php', |
542 | 12 | Philippe Caseiro | pattern: '$dbpass="', |
543 | 12 | Philippe Caseiro | owner: 'www-data:www-data', |
544 | 12 | Philippe Caseiro | mod: '600' } |
545 | 12 | Philippe Caseiro | </pre> |
546 | 12 | Philippe Caseiro | <pre> |
547 | 12 | Philippe Caseiro | |
548 | 12 | Philippe Caseiro | La variable container_path_reseau existe toujours et si le serveur n'est pas en mode conteneur elle est simplement vide. |
549 | 12 | Philippe Caseiro | |
550 | 12 | Philippe Caseiro | Voila pour le template de configuration de EoleDB. Maintenant il faut que l'application utilisent les configurations de base de données dans ça propre configuration. |
551 | 12 | Philippe Caseiro | |
552 | 12 | Philippe Caseiro | On continue avec l'exemple de taskfreak : |
553 | 12 | Philippe Caseiro | |
554 | 12 | Philippe Caseiro | h3. Évolution du template de configuration de l'application pour le support des 3 modes et du mode bonus. |
555 | 12 | Philippe Caseiro | |
556 | 12 | Philippe Caseiro | On commence par récupérer et stocker dans une variable de template le contenues de la variable "tf_db_mode". |
557 | 12 | Philippe Caseiro | <pre> |
558 | 12 | Philippe Caseiro | %set db_mode = %%getVar("tf_db_mode", 'non') |
559 | 12 | Philippe Caseiro | </pre> |
560 | 12 | Philippe Caseiro | |
561 | 12 | Philippe Caseiro | On commence par le mode "externe", on récupère la valeur que l'utilisateur a définis en mode "externe" pour la |
562 | 12 | Philippe Caseiro | configuration de l'application. On traite également la définition du port d'écoute, ici on ajoute une valeur |
563 | 12 | Philippe Caseiro | que si l'utilisateur en définis une, je suppose que taskfreak a le port mysql en dur quelque part vus que l'option |
564 | 12 | Philippe Caseiro | n'est pas obligatoire. |
565 | 12 | Philippe Caseiro | |
566 | 12 | Philippe Caseiro | <pre> |
567 | 12 | Philippe Caseiro | %if %%db_mode == "externe" |
568 | 12 | Philippe Caseiro | define('TZN_DB_HOST','%%tf_dbserver'); |
569 | 12 | Philippe Caseiro | %if %%getVar('tf_dbport', 'non') != "non" |
570 | 12 | Philippe Caseiro | define('TZN_DB_PORT', '%%tf_dbport'); |
571 | 12 | Philippe Caseiro | %end if |
572 | 12 | Philippe Caseiro | </pre> |
573 | 12 | Philippe Caseiro | |
574 | 12 | Philippe Caseiro | Ensuite on traite le mode "default" qui est le mode le plus compliqué ici. |
575 | 12 | Philippe Caseiro | Donc si l'utilisateur a choisi "default" on récupère la valeur de la variable |
576 | 12 | Philippe Caseiro | edb_host, définie dans le dictionnaire de l'Eolisation de EoleDB. Cette variable |
577 | 12 | Philippe Caseiro | contiens dans certains cas l'adresse du serveur définis. |
578 | 12 | Philippe Caseiro | |
579 | 12 | Philippe Caseiro | <pre> |
580 | 1 | Philippe Caseiro | %else if %%db_mode == "default" |
581 | 12 | Philippe Caseiro | %set dbhost = %%getVar('edb_host', 'non') |
582 | 12 | Philippe Caseiro | </pre> |
583 | 12 | Philippe Caseiro | |
584 | 13 | Philippe Caseiro | Il est possible que la variable ne soit pas définie, c'est le cas si EoleDB est configuré pour utiliser le serveur local. |
585 | 13 | Philippe Caseiro | Donc si la variable "edb_host" n'est pas définie et que le mode conteneur est actif on utilise la variable adresse_ip_mysql |
586 | 13 | Philippe Caseiro | Dans le cas contraire on vérifie si edb_host est définis, si oui on l'utilise sinon on utilise "localhost". |
587 | 12 | Philippe Caseiro | |
588 | 12 | Philippe Caseiro | <pre> |
589 | 12 | Philippe Caseiro | %if %%dbhost == 'non' and %%mode_conteneur_actif == 'oui': |
590 | 12 | Philippe Caseiro | define('TZN_DB_HOST', '%%adresse_ip_mysql') |
591 | 12 | Philippe Caseiro | %else |
592 | 12 | Philippe Caseiro | %if %%dbhost == 'non' |
593 | 12 | Philippe Caseiro | define('TZN_DB_HOST', 'localhost'); |
594 | 12 | Philippe Caseiro | %else |
595 | 12 | Philippe Caseiro | define('TZN_DB_HOST', '%%edb_host'); |
596 | 12 | Philippe Caseiro | %end if |
597 | 12 | Philippe Caseiro | %end if |
598 | 12 | Philippe Caseiro | %if %%getVar('edb_dbport', 'non') != "non" |
599 | 12 | Philippe Caseiro | define('TZN_DB_PORT', '%%edb_port'); |
600 | 12 | Philippe Caseiro | %end if |
601 | 12 | Philippe Caseiro | </pre> |
602 | 12 | Philippe Caseiro | |
603 | 12 | Philippe Caseiro | Sinon en mode local on utilise simplement la variable adresse_ip_mysql qui est toujours définie. |
604 | 12 | Philippe Caseiro | |
605 | 12 | Philippe Caseiro | <pre> |
606 | 12 | Philippe Caseiro | %else |
607 | 1 | Philippe Caseiro | define('TZN_DB_HOST','%%adresse_ip_mysql'); |
608 | 1 | Philippe Caseiro | %end if |
609 | 16 | Gérald Schwartzmann | </pre> |