24 » Historique » Version 35
Version 34 (Joël Cuissinat, 03/10/2013 17:11) → Version 35/40 (Emmanuel GARETTE, 27/11/2013 11:24)
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/PrepareEOLE24
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) : ?
{{>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/PrepareEOLE24
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) : ?