Projet

Général

Profil

Eole-2.4

Normalisation de l’arborescence source

Prérequis aux packaging 2.4: skeletorisation des sources.

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)

La version 2.4 apporte de nouvelles notions et notamment :

Les types Creole

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

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

Gestion du firewall

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

Templates

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

Utilisation de "creole_client"

Les fonctionnalités de creole_client sont utilisables directement dans les templates

%%creole_client.get_creole('activer_truc', 'non')

Cependant, en pratique, cet exemple peut avantageusement être remplacé en utilisant la fonction native %%getVar :

%%getVar('activer_truc', 'non')

Utilisation de l'attribut ".value"

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

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 :

%for %%idx, %%val in %%enumerate(%%variable)
La valeur %%val possède l'index %%idx
%end for

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

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

Mise à jour

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

CreoleLint

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

Gestion des Locks

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

Gestion des schedules (Mises à jour automatiques par exemple)

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

Programmation shell

CreoleGet

.ParseDico
echo $mavariable

est remplacé par :
echo $(CreoleGet mavariable)

ATTENTION : à ce jour, pour accéder à une variable esclave, il faut connaître la variable maître :

echo $(CreoleGet lamaster.lesclave)

Depuis #6075 (alpha2), si on n'est pas sûr que la variable existe ou qu'elle soit active, on peut utiliser :

echo $(CreoleGet mavariable valeurpardefaut)

CreoleRun

./usr/share/eole/FonctionsEoleNg
RunCmd "ma -commande" conteneur

est remplacé par :
CreoleRun "ma -commande" conteneur

Interactions avec l'utilisateur

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

Tests système

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

Programmation python

CreoleClient

Obtenir la valeur d'une variable

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']

est remplacé par :

from creole import client
dico = client.CreoleClient()
print dico.get_creole('nom_machine')
print dico.get_creole('container_path_annuaire')

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 :

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

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).

Attention, dans le cas des variables de type 'esclave', la clé dans le dictionnaire est au format suivant : 'nom_var_maître.nom_var_esclave'

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

Exemples en mode avancé

  • Récupérer les "settings" d'une variable : #7996
  • Importer une configuration manuellement :
    from creole.loader import creole_loader
    creole_loader(force_configeol="/tmp/ssh_eth0.eol")
    

Migration

eole-web

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

eole-common

  • 01_network.xml :
    1. la valeur "aucun" de la variable alias_gw_eth? est remplacée par None
    2. :%s/adresse_ip_vlan_eth/vlan_ip_eth/g
    3. :%s/adresse_netmask_vlan_eth/vlan_netmask_eth/g
    4. :%s/adresse_network_vlan_eth/vlan_network_eth/g
    5. :%s/adresse_broadcast_vlan_eth/vlan_broadcast_eth/g
    6. :%s/adresse_gw_vlan_eth/vlan_gw_eth/g
    7. :%s/id_vlan_eth/vlan_id_eth/g
    8. la valeur "aucun" de la variable vlan_gw_eth? est remplacée par None

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

Script d'Upgrade 2.3 -> 2.4

Voir page dédiée : Upgrade-Auto-24

Packaging

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

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) : eole-<nom_module>-all