24 » Historique » Version 28
Version 27 (Joël Cuissinat, 26/02/2013 10:48) → Version 28/40 (Joël Cuissinat, 12/06/2013 18:07)
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)
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>
h3. Utilisation d'attribut ".value"
L'attribut ".value" ne devrait plus être utilisé dans les templates 2.4.
h3. Utilisation d'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
h3. Gestion des Locks
http://dev-eole.ac-dijon.fr/projects/creole/wiki/Lock24
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>
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) : ?
{{>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)
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>
h3. Utilisation d'attribut ".value"
L'attribut ".value" ne devrait plus être utilisé dans les templates 2.4.
h3. Utilisation d'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
h3. Gestion des Locks
http://dev-eole.ac-dijon.fr/projects/creole/wiki/Lock24
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>
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) : ?