Eole - gestion des dictionnaires personnalisés
Réalisation : CETIAD (Centre d Etude et de Traitement Informatique de l Académie de Dijon) 33 rue Berbisey BP 1557 21000 DIJON Cedex site portail: (http://eole.orion.education.fr) Auteurs : Bruno Boiget. La reproduction dans ce manuel de noms de marques déposées, de désignations des marques, etc. même sans stipulation explicite que de tels noms et marques sont protégés par la loi, n autorise pas à supposer qu ils soient libres et puissent être utilisés par quiconque. Cet ouvrage a été mis en page avec L A T E X, à partir de fichiers au format XML convertis à l aide de xsltproc développé par Daniel Veillard (http://xmlsoft.org/xslt/). Les feuilles de styles, la DTD et les outils associés ont été developpés par Logidée (http://www.logidee.com) pour rédiger et maintenir ses supports de formations. Ces outils sont bien sûr sous licence libre et disponibles sur le site web mentionné ci-dessus. Permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License disponible à http://www.gnu.org/copyleft/fdl.html), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation. Veuillez vous référer aux sources XML de ce document (que vous pouvez obtenir auprès de l auteur) pour connaitre le détail de la licence avec la liste des Sections Invariables, des Textes de Première de Couverture, et des Textes de Quatrième de Couverture.
Sommaire 1 Présentation des dictionnaires locaux........................................ 4 Les dictionnaires Eole....................................................... 4 Nouvelles fonctionnalités..................................................... 4 2 Création d un dictionnaires additionnel....................................... 5 Pourquoi créer un nouveau dictionnaire?....................................... 5 Contenu d un dictionnaire.................................................... 5 Préparation des fichiers de configuration....................................... 5 3 Définition des variables..................................................... 7 Possibilités offertes......................................................... 7 Syntaxe générale de définition................................................ 7 Fonctions de validation de saisie.............................................. 8 Fonctions de calcul et contrôle de saisie........................................ 8 Précisions sur la syntaxe..................................................... 8 Exemple de variables avec fonctions avancées.................................. 8
1 : Présentation des dictionnaires locaux Les dictionnaires Eole Nouvelles fonctionnalités Les dictionnaires Eole Chaque module Eole est livré avec un fichier /etc/eole/dictionnaire qui recense tous les paramètres nécessaires à la configuration des differents services du module (voir la docummentation générale sur le projet Eole). Nouvelles fonctionnalités La nouvelle version du système de gestion des dictionnaires apporte les fonctionnalités suivantes: Calcul de valeurs par défaut lors de la saisie de variables (gen_dico/gen_config) Vérification des valeurs saisies (idem) Nouvelles interfaces de saisies des paramètres Possibilité de gérer de nouveaux fichiers de configuration via des dictionnaires locaux Compatibilité avec le module Zephir pour une gestion centralisée des configurations Ces fonctionnalités sont détaillées dans les pages suivantes Présentation des dictionnaires locaux 4
2 : Création d un dictionnaires additionnel Pourquoi créer un nouveau dictionnaire? Contenu d un dictionnaire Préparation des fichiers de configuration Pourquoi créer un nouveau dictionnaire? Le dictionnaire de base de chaque module Eole comprend les variables nécessaires à la mise en place des services livrés. Les dictionnaires locaux vous permettent d intégrer de nouvelles fonctionnalités tout en restant compatible avec le processus de mise à jour du module installé. Vous pouvez utiliser cette fonctionnalité si vous voulez ajouter des fichiers de configuration (par exemple pour webmin, mysql,...) et les intégrer au processus d instanciation et de reconfiguration des serveurs Eole. Les dictionnaires locaux n étant pas écrasés lors de mises à jour, cela vous permet de personnaliser vos serveurs (un peu à la manière des patchs, mais avec un dégré de fonctionnalité plus élevé) sans compromettre leur maintenance. Contenu d un dictionnaire Les dictionnaires additionnels doivent être placés dans le répertoire /etc/eole/dicos/ et porter l extension.eol (par exemple /etc/eole/dicos/webmin-scribe.eol). Le contenu de ces fichiers est constitué de deux parties distinctes séparées par une ligne contenant uniquement "%%" La première partie correspond à la liste des fichiers de configuration qui doivent être mis en place à l instance ( exemple : le fichier /etc/resolv.conf) La deuxième partie contient la liste des variables à renseigner pour que ces fichiers soient adaptés au serveur(exemple : l adresse ip du dns) La syntaxe de définition des variables est décrite dans les pages suivantes Préparation des fichiers de configuration Les fichiers de configuration que vous voulez instancier doivent être préparés à cet effet. Pour cela, vous devez remplacer les valeurs susceptibles de changer par la variable correspondante. Si nous prenons encore l exemple du fichier /etc/resolv.conf, nous savons que ce fichier doit contenir entre autres l adresse d un serveur dns accessible par la machine. Cette adresse ne sera pas la même suivant l endroit où le serveur est installé, et nous devons donc la demander à l utilisateur lors de l installation du serveur. Pour cela nous créons une copie de resolv.conf dans le répertoire /etc/eole/ et nous le modifions de la façon suivante: Création d un dictionnaires additionnel 5
ligne d origine: nameserver 192.168.230.2 ligne modifiée: nameserver %%adresse_ip_dns_primaire%% Nous créons alors un dictionnaire (exemple: /etc/eole/dicos/dns.eol) qui sera le suivant: # liste des fichiers à instancier pour permettre la résolution dns /etc/resolv.conf %% # définition des variables nécessaires aux fichiers définis ci-dessus adresse_ip_dns_primaire@@127.0.0.1#adresse ip du dns primaire. Création d un dictionnaires additionnel 6
3 : Définition des variables Possibilités offertes Syntaxe générale de définition Fonctions de validation de saisie Fonctions de calcul et contrôle de saisie Précisions sur la syntaxe Exemple de variables avec fonctions avancées Possibilités offertes La définition de base d une variable permet de donner un nom à cette variable (qui l identifiera dans les fichiers ou elle doit être remplacée par sa valeur), un libellé (correspond à la question posée par le progamme de saisie (gen_config,...), et éventuellement une valeur par défaut. La syntaxe de définition permet également de spécifier une fonction de vérification de la variable qui forcera l utilisateur à respecter une certaine syntaxe, ou à respecter des limites dans les valeurs saisies. (voir plus loin pour les différentes fonctions fournies) Enfin, il est possible de spécifier des options de commande qui permettront soit de calculer une valeur par défaut pour la variable (éventuellement en fonction de ce qui a été saisi auparavant), soit de ne pas effectuer la saisie de cette variable dans certaines conditions (idem). Par exemple, on ne demande la plage d adressses ip du dhcp que si l utilisateur a répondu oui à la question Activer le service dhcp sur le serveur? Syntaxe générale de définition La syntaxe permettant de déclarer une variable dans le dictionnaire est la suivante : nom@@valeur par défaut#libellé (question) #fonction de vérification??parametre1??..??parametren fonction de commande??parametre1??..??parametren Note Les définitions de variables doivent être écrites sur une seule ligne, mais elles sont ici présentées sur plusieurs lignes pour des raisons de présentation. Seuls le nom de variable et le libellé sont obligatoires, les autres parties sont facultatives. Exemple de variable : adresse du réseau de la carte eth0. La fonction de vérification vérifie la syntaxe de l adresse et une fonction de calcul de la valeur par défaut est utilisée (en fonction de l adresse ip et du masque saisis auparavant). Définition des variables 7
adresse_network_eth0@@#adresse reseau de la carte eth0 (ex 10.21.5.0). #network??$adresse_ip_eth0;obligatoire calc_network??$adresse_ip_eth0??$adresse_netmask_eth0 Fonctions de validation de saisie Les mots cles sont précédés par un deuxième # après le libellé. on peut en spécifier plusieurs en les séparant par des ;. Si la fonction prend des arguments, ils sont séparés par??. Liste des fonctions et arguments : fonction valeur non vide adresse ip valide plage ip valide adresse réseau valide masque réseau valide nombre entier valide expression régulière nom et arguments obligatoire ip plage_ip network??ip netmask entier??min??max regexp??partie1??..??partien Fonctions de calcul et contrôle de saisie Ces fonctions permettent d influencer la saisie et de calculer des valeurs par defaut pour les variables. Elles se situent en fin de ligne dans le dictionnaire, et le premier mot cle est prefixé de??. Liste des fonctions et arguments : fonction cacher la saisie calculer une adresse de réseau cacher la saisie selon la valeur d une variable spécifier (ou calculer) la valeur par défaut nom et arguments invisible calc_network??ip??netmask optionnel??variable??[valeur1,..,valeurn] val_defaut??valeur Précisions sur la syntaxe Lorsqu une fonction attend un argument, il est possible de lui donner une des valeurs suivantes : $variable : une variable du dictionnaire (ex : $nom_machine). Seules les variables déjà saisies (donc définies en amont dans le dictionnaire) sont disponibles. Une valeur en python ou une expression retournant une valeur (ex : "toto", 1, os.environ["hostname"]). La variable data fait référence à la valeur saisie par l utilisateur et peut-être utilisée (en particulier pour une commande système). Dans certains cas, l argument attendu peut-être du type liste (par exemple, pour une énumeration). Par defaut, la fonction de vérification d énumeration accepte l une des valeurs suivantes : ["oui","non","oui","non","oui","non","o","n","o","n"]. Exemple de variables avec fonctions avancées exemple pour une saisie de type oui/non : Définition des variables 8
active_dhcp@@non#activer le service dhcp sur le serveur (oui/non) #enumeration??["oui","non","o","n"];obligatoire L utilisateur devra saisir "oui", "o", "n", ou "non" (non par défaut). exemple de vérification avec une expression régulière : nom_domaine_local@@monreseau.lan#nom de domaine privé du reseau local. #obligatoire;regexp??".\."??$nom_machine??"\.." Le nom de domaine devra comporter le nom donné au serveur après le premier point. (ex : test.horus.lan si %%nom_machine%% est "horus"). exemple de saisie optionnelle (plage dhcp) : plage_adresse@@#plage d ip à utiliser pour le dhcp. #plage_ip??optionnel??$active_dhcp??["non","n"] La plage ip du dhcp ne sera pas demandée dans le cas où la valeur de active dhcp sera "non" ou "n" (dhcp inactif). exemple de vérification de la joignabilité du serveur dns choisi : adresse ip dns primaire@@#adresse ip du dns primaire. #ip;obligatoire;shell??"ping -c 1"??0??data??">/dev/null" Dans cet exemple, le programme demandera une autre ip tant que la commande _ping -c 1 data >/dev/null_ (ou data = l ip saisie) ne retournera pas 0. Note Cet exemple est à éviter dans la réalité car lors de la première saisie, on ne pourra jamais atteindre le dns si la carte réseau n est pas encore configurée. Exemple de calcul de valeur par défaut : nom_serveur_smb@@#nom du serveur de fichier (ex: monserveur) #obligatoire??val_defaut??$nom_machine Par défaut, le nom du serveur samba sera le nom d hote du serveur (saisi auparavant). Définition des variables 9
Conception et réalisation CETIAD-EOLE, 33, Rue berbisey, 21032 Dijon Cedex