Projet

Général

Profil

24 » Historique » Version 34

Version 33 (Fabrice Barconnière, 03/10/2013 14:53) → Version 34/40 (Joël Cuissinat, 03/10/2013 17:11)

h1. Eole-2.4

{{>toc}}

h2. Dictionnaires

Les dictionnaires 2.3 sont théoriquement fonctionnels sur 2.4, merci de remonter les éventuels dysfonctionnements rencontrés !
La plupart des variables "intermédiaires" peuvent théoriquement être supprimées (exemple : "maj du dico nut":http://dev-eole.ac-dijon.fr/projects/eole-nut/repository/revisions/5620af7f9b21444c1b873ee9b7fe0414aee468ee/diff/dicos/01_nut.xml)

La version 2.4 apporte de nouvelles notions et notamment :
* *disabled* : pour des variables désactivées (cf. http://dev-eole.ac-dijon.fr/projects/tiramisu/wiki/RequiredEtDisabled)
* *frozen* : pour des variables non modifiables une fois initialisées (cf. #1328)
* *host*, *fstab*, *firewall* : gestion avancée des conteneurs (cf. #4666)

h3. Les types Creole

cf. page dédiée : http://dev-eole.ac-dijon.fr/projects/creole/wiki/TypeCreole24

h3. Les conteneurs

Ajouter une balise dans la partie <containers> et <files> des dictionnaires :
cf. page dédiée : http://dev-eole.ac-dijon.fr/projects/creole/wiki/AjouterUneBaliseContainers24

h3. Gestion du firewall

cf. page dédiée : http://dev-eole.ac-dijon.fr/projects/creole/wiki/firewall24

h2. Templates

Les templates 2.3 sont théoriquement fonctionnels sur 2.4.
Évidemment certains devront certainement être mis à niveau.

h3. Utilisation de "creole_client"

Les fonctionnalités de *creole_client* sont utilisables directement dans les templates
<pre>
%%creole_client.get_creole('activer_truc', 'non')
</pre>

Cependant, en pratique, cet exemple peut avantageusement être remplacé en utilisant la fonction native *%%getVar* :
<pre>
%%getVar('activer_truc', 'non')
</pre>

h3. Utilisation de l'attribut ".value"

L'attribut ".value" ne devrait plus être utilisé dans les templates 2.4.

h3. Utilisation de l'attribut ".index"

L'attribut ".index" ne devrait plus être utilisé dans les templates 2.4.
La fonction "enumerate" peut être utilisée pour remplacer le code existant :
<pre>
%for %%idx, %%val in %%enumerate(%%variable)
La valeur %%val possède l'index %%idx
%end for
</pre>

h2. Fichier de configuration

Désormais, seul le fichier */etc/eole/config.eol* fait foi.

Il est automatiquement chargé par les programmes :
* gen_config
* instance
* reconfigure

h2. Nouveaux chemins

* */usr/lib/eole* : librairies EOLE (remplacent _FonctionsEoleNg_)
* */usr/share/eole/sbin* : scripts EOLE
* */usr/share/eole/diagnose* : scripts diagnose (plus de sous-répertoires)

Au niveau des dépôts de code, ces répertoires sont nativement gérés par "eole-skeletor":http://dev-eole.ac-dijon.fr/projects/eole-skeletor/wiki/Doc-geting-started

h2. Mise à jour

cf. page dédiée : http://dev-eole.ac-dijon.fr/projects/creole/wiki/MajAuto24

h2. CreoleLint

cf. page dédiée : http://dev-eole.ac-dijon.fr/projects/creole/wiki/CreoleLint24

h2. Gestion des Locks

http://dev-eole.ac-dijon.fr/projects/creole/wiki/Lock24

h2. Gestion des schedules (Mises à jour automatiques par exemple)

cf. page dédiée : http://dev-eole.ac-dijon.fr/projects/creole/wiki/Schedule24

h2. Programmation shell



h3. CreoleGet

<pre>
.ParseDico
echo $mavariable
</pre>
est remplacé par :
<pre>
echo $(CreoleGet mavariable)
</pre>

ATTENTION : à ce jour, pour accéder à une variable esclave, il faut connaître la variable maître :
<pre>
echo $(CreoleGet lamaster.lesclave)
</pre>

Depuis #6075 (alpha2), si on n'est pas sûr que la variable existe ou qu'elle soit active, on peut utiliser :
<pre>
echo $(CreoleGet mavariable valeurpardefaut)
</pre>

h3. CreoleRun

<pre>
./usr/share/eole/FonctionsEoleNg
RunCmd "ma -commande" conteneur
</pre>
est remplacé par :
<pre>
CreoleRun "ma -commande" conteneur
</pre>

h3. Interactions avec l'utilisateur

<pre>
. /usr/lib/eole/ihm.sh
EchoRouge "Attention"
Question_ouinon "Êtes-vous bien sûr de vouloir faire cela ?"
</pre>

h3. Tests système

<pre>
. /usr/lib/eole/diagnose.sh
TestService "mon SSH" localhost:22
</pre>

h2. Programmation python

h3. CreoleClient

h4. Obtenir la valeur d'une variable

<pre>
from creole import parsedico
from creole.eosfunc import load_container_var
dico = parsedico.parse_dico()
print dico['nom_machine']
conteneurs = load_container_var()
print conteneurs['container_path_annuaire']
</pre>

est remplacé par :

<pre>
from creole import client
dico = client.CreoleClient()
print dico.get_creole('nom_machine')
print dico.get_creole('container_path_annuaire')
</pre>

Dans le cas où l'on n'est pas sûr de l'existence de la variable, une valeur par défaut peut être passée en second paramètre :

<pre>
if dico.get_creole('activer_service', 'non') == 'oui':
print "On est sûr que oui"
</pre>

h4. Obtenir le dictionnaire des variables

L'utilisation de _get_creole_ sans argument, permet d'obtenir un dictionnaire des variables similaire à celui de la 2.3 et ainsi de (re)faire fonctionner d'anciennes applications sans modifications de code majeures (exemple pour l'EAD).

<pre>
from creole.client import CreoleClient
dico = CreoleClient().get_creole()
ip_locale = dico['adresse_ip_eth0']
</pre>

h2. Migration

h3. eole-web

* */etc/apache2/sites-enable/scribe* est à supprimer (dans le conteneur)

h3. eole-common

* 01_network.xml :
# la valeur "aucun" de la variable *alias_gw_eth?* est remplacée par _None_
# :%s/adresse_ip_vlan_eth/vlan_ip_eth/g
# :%s/adresse_netmask_vlan_eth/vlan_netmask_eth/g
# :%s/adresse_network_vlan_eth/vlan_network_eth/g
# :%s/adresse_broadcast_vlan_eth/vlan_broadcast_eth/g
# :%s/adresse_gw_vlan_eth/vlan_gw_eth/g
# :%s/id_vlan_eth/vlan_id_eth/g
# la valeur "aucun" de la variable *vlan_gw_eth?* est remplacée par _None_

h3. eole-dhcp

* /etc/dhcp3 -> /etc/dhcp
* /etc/init.d/dhcp3-server -> /etc/init.d/isc-dhcp-server
* mais pas de problème spécifique puisque pour les adresses fixées, c'est toujours */var/lib/eole/config/dhcp.conf* qui fait foi

h2. Packaging

h3. Portage des projets vers 2.4 et packaging 2.4

cf. page dédiée : http://dev-eole.ac-dijon.fr/projects/eole/wiki/EoleDebianPackaging24

h3. Nommage des paquets

_Premières conclusions issues de la discussion #3096_

* Paquets de base
** module non conteneur : *eole-server* (remplace eole-common)
** module conteneur : *eole-lxc-controller* (remplace eole-conteneur)
* Paquets de service
** dicos/templates : *eole-<service>*
** dépendances : *eole-<service>-pkg* (au lieu de <service>-pkg)
* Paquets de module
** méta-paquet de module : *eole-<nom_module>-module* (remplace <nom_module>-pkg)
** dicos/templates : *eole-<nom_module>* (remplace conf-<nom_module>)
** dépendances (pour modules non conteneur) : ?