Projet

Général

Profil

Doc-geting-started » Historique » Version 6

« Précédent - Version 6/35 (diff) - Suivant » - Version actuelle
Lionel Morin, 19/09/2012 14:39


Premiers pas

Dans ce document vous trouverez toutes les étapes pour utiliser le dépôt standard Eole pour le packaging.

L'idée de départ de ce dépôt est de fournir un outil qui vous permet de disposer d'un environnement prêt à l'emploi
pour construire un paquet "Eole".

Il suffit de mettre les fichiers dans les bons répertoires.

Le dépôt

Voici l’arborescence type d'un dépôt "standardisé"

  • /src/
    • <appli>-<version>/
    • plugins-<version>/nom/
    • lang-<version>/nom/
  • /tmpl/
  • /dicos/
  • /pretemplate/
  • /posttemplate/
  • /postservice/
  • /sql/
    • gen/
    • updates/
    • conf/
      • gen/
      • updates/
      • pwd/
  • /sso/
    • filtres/
    • user-info/
  • /ldap/
    • pwd/
  • /sharenvole/
  • Makefile
  • eole.mk
  • apps.mk

Commentaires :

/src/ Répertoire de destination des sources de l'application
/src/<appli>-<version>/ Code source de l'application avec la possibilité de faire cohabiter plusieurs versions lors des mises à jour
/src/plugins-<version>/ Répertoire contenant les plugins externes et ceux développés en interne pour cette version de l'application (un sous-répertoire par plugin)
/src/lang-<version>/ Répertoire des traductions pour cette version (un sous-répertoire par langue)
/tmpl/ Répertoire des templates eole
/dicos/ Répertoire des dictionnaires eole (XX<appli>.xml)_
/pretemplate/ Répertoire des scripts (shell ou python) de pretemplate
/posttemplate/ Répertoire des scripts (shell ou python) de posttemplate
/postservice/ Répertoire des scripts (shell ou python) de postservice
/sql/ Répertoire des configurations pour la génération et la gestion des mise à jours des bases de données
/sql/gen/ Répertoire des scripts sql à exécuter lors de la génération de la base de données
/sql/updates Répertoire des scripts sql à exécuter lors de mise à jour de la base de données
/sql/conf/ Répertoire des configurations pour la gestion de la bases de données
/sql/conf/gen Répertoire du fichier de configuration de génération de la base de données
/sql/conf/updates Répertoire du fichier de configuration des mises à jour de la base de données
/sql/conf/passwords Répertoire du fichier de configuration pour la gestion de mots de passe d'accès à la base de données
/sso/ Répertoire des configurations pour la gestion du SSO
/sso/filtres/ Répertoire des filtres sso (<appli>.ini, <appli>_apps.ini)
/sso/user-info/ Répertoire du profil sso (profil<appli>.py)_
/ldap/ Répertoire des configurations pour la gestion des mots de passe d'accès au serveur ldap
/ldap/passwords/ Répertoire du fichier de configuration du mot de passe ldap (<appli>.ini)
/sharenvole/ Répertoire des scripts historiques d'aide à l'installation des applications envole (à éviter si possible)
Makefile Fichier de règles de "compilation"
eole.mk Règles standard Eole ! ne pas changer ce fichier
apps.mk Règles pour l'installation de l'application web.

Etape 1 : Cloner le dépôt

git clone http://dev-eole.ac-dijon.fr/git/eole-skeletor

Cloning into 'eole-skeletor'...
remote: Counting objects: 83, done.
remote: Compressing objects: 100% (71/71), done.
remote: Total 83 (delta 26), reused 0 (delta 0)
Unpacking objects: 100% (83/83), done.

Vous disposez désormais d'un répertoire eole-skeletor.
Ce répertoire contiens un exemple type de dépôt standard.

Etape 2: Créer votre propre dépôt

Lancer les commandes suivantes :

mkdir eole-monappli
cd eole-monappli
git init .
cp ../eole-skeletor/*.mk ../eole-skeletor/Makefile .
git add .
git commit -am "Premier commit : Ajout des fichiers Makefile standard"

user@host:code $ mkdir eole-monappli
user@host:code $ cd eole-monappli
user@host:code/eole-monappli $ git init .
Initialized empty Git repository in /tmp/eole-monappli/.git/
user@host:code/eole-monappli $ cp ../eole-skeletor/*.mk ../eole-skeletor/Makefile .
user@host:code/eole-monappli $ git add .
user@host:code/eole-monappli $ git commit -am "Premier commit : Ajout des fichiers Makefile standard" 
[master (root-commit) 1be6951] Premier commit : Ajout des fichiers Makefile standard
3 files changed, 195 insertions(+)
create mode 100644 Makefile
create mode 100644 apps.mk
create mode 100644 eole.mk
user@host:code/eole-monappli $

Etape 3: Mise en place des fichiers (dico,templates,sources,configurations ...)

Le principe est simple pour que le "Makefile" installe votre fichier au bon endroit, il suffit de créer le répertoire et
de mettre votre fichier dans le dit répertoire.

Exemple d'ajout diconnaire "Eole" :

Il suffit de lancer les commandes suivantes :

mkdir dicos
cp XX_nom_appli.xml dicos

user@host:code/eole-monappli $ mkdir dicos
user@host:code/eole-monappli $ ls
apps.mk  dicos/  eole.mk  Makefile
user@host:code/eole-monappli $ cp /emplacement/de/mon/dico/XX_nom_appli.xml dicos
user@host:code/eole-monappli $ ls dicos
XX_nom_appli.xml

Pour l'ajout d'un template la procédure est la même avec le répertoire tmpl

Exemple d'ajout de la génération d'une base de données

Création de l'arborescence:

├── sql
│   ├── conf
│   │   ├── gen
│   │   │   └── mon_appi.py
│   │   └── passwords
│   │       └── monappli.ini
│   └── gen
│       ├── premier_script.sql
│       └── second_script.sql

mkdir -p sql/conf/gen sql/conf/passwords sql/gen

user@host:code/eole-monappli $ mkdir -p sql/conf/gen sql/conf/passwords sql/gen
user@host:code/eole-monappli $ ls -R sql 
sql:
conf/  gen/

sql/conf:
gen/  passwords/

sql/conf/gen:

sql/conf/passwords:

sql/gen:
user@host:code/eole-monappli $ tree 
sql
├── conf
│   ├── gen
│   └── passwords
└── gen

Création des fichiers de configurations

Pour créer une base de données il faut plusieurs fichiers.
  • Un fichier de configuration pour la génération
  • Un fichier de configuration pour la gestion des mots de passe d'accès à la base
  • Les scripts SQL pour la création et l'initialisation de la base de donéés
Fichier de Configuration pour la génération :

Ce fichier contiens les instructions nécessaire à la génération de la bases en voici un exemple :

#-*-coding:utf-8-*-
###########################################################################
# Eole NG - 2011
# Copyright Pole de Competence Eole  (Ministere Education - Academie Dijon)
# Licence CeCill  cf /root/LicenceEole.txt
# eole@ac-dijon.fr
#
# gepi.py
#
# Création de la base de données mysql de gepi
#
###########################################################################
""" 
Config pour gepi
""" 
from eolesql.db_test import db_exists, test_var

GEPI_TABLEFILENAMES = ['/usr/share/eole/mysql/gepi/gen/gepi-create-0-initeole.sql',
                       '/usr/share/eole/mysql/gepi/gen/gepi-create-1-structure.sql',
                       '/usr/share/eole/mysql/gepi/gen/gepi-create-2-data.sql',
                       '/usr/share/eole/mysql/gepi/gen/gepi-create-3-ajouteole.sql']
def test():
    """ 
    test l'existence de la base gepi
    """ 
    return test_var('activer_gepi') and not db_exists('gepi')

conf_dict = dict(filenames=GEPI_TABLEFILENAMES,
                 test=test)

Il faut placer ce fichier dans le répertoire sql/conf/gen.
Fichier de configuration de gestion des mots de passe

Ce fichier contiens les instructions nécessaire au renouvellement des mots de passe
des utilisateurs ayant accès à la base de données. Les applications dispose d'un utilisateur
qui a des droits d'écriture dans les tables de la base, cet utilisateur a un mot de passe
qui est renouvellé régulièrement par les méchanismes "Eole". Ce fichier sert a faire en sorte
que la configuration de l'application soit mise à jour lors du changement du mot de passe.

Voici un exemple de fichier :

[gepi]
username=gepi
container=web
template=$dbPass=" 
filename=/var/www/html/gepi/secure/connect.inc.php
owner=root:www-data
chmod=660
Quelques petites précisions :
  • username= contiens le nom de l'utilisateur utilisé par l'application pour accèder a la base
  • container= contiens le nom du conteneur lxc ou l'application est héberger
  • template= contiens la chaine qui préfixe le mot de passe dans le fichier de configuration
  • filname= contiens le fichier de configuration à mettre à jour
  • owner= contiens l'utilisateur et le groupe propriétaire du fichier de configuration au format user:group
  • chmod= contiens les droits du fichier au format XXX

Il faut placer ce fichier dans le répertoire sql/conf/passwords.

Scripts SQL de création et d'initialisation de la base

Un seul script est obligatoire, le script de création ( toujours le premier de la liste )

# Liste des fichiers sql a exécuter (dans l'ordre)
GEPI_TABLEFILENAMES = ['/usr/share/eole/mysql/gepi/gen/gepi-create-0-initeole.sql',
                       '/usr/share/eole/mysql/gepi/gen/gepi-create-1-structure.sql',
                       '/usr/share/eole/mysql/gepi/gen/gepi-create-2-data.sql',
                       '/usr/share/eole/mysql/gepi/gen/gepi-create-3-ajouteole.sql']

Dans l'exemple c'est le script /usr/share/eole/mysql/gepi/gen/gepi-create-0-initeole.sql.

Ce script est très souvent un "template" eole car il on a besoin d'informations contenus dans la configuration "Eole".

En voici le contenus :

-- création de la base de donnée
CREATE DATABASE gepi CHARACTER SET utf8 COLLATE utf8_general_ci;

-- création du user de la base
grant all privileges on gepi.* to gepi@%%adresse_ip_web identified by 'gepi';
flush privileges ;

-- connexion à la base
\r gepi

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

Comme ce fichier est un template il doit être placé dans le répertoire tmpl.

Les autres fichiers de la liste sont de scripts sql très souvent fournis par l'application qui sont a placé dans le répertoire sql/gen

Tester l'installation via le Makefile standard