• Les cookies assurent le bon fonctionnement de nos services. En poursuivant votre navigation, vous acceptez l'utilisation de cookies.

Tiramisu, un outil de gestion de configuration
EOLE , Technique , Tiramisu

À cause de l'afflux de plus en plus grand des options de configuration des serveurs EOLE (plus de 1600 au dernier recensement), il était devenu de plus en plus difficile de correctement récupérer les options et de les utiliser là où elles devaient effectivement être employées. Pour remédier à ces difficultés, nous avons développé un outil spécifique de gestion de configuration.

Tiramisu est utilisé comme moteur du générateur de configuration de la version EOLE 2.4.

Par rapport aux autres gestionnaires de configuration existants comme cfgengine ou puppet, Tiramisu est très spartiate : il n'a pas d'interface graphique, ni de syntaxe d'expression de règle, ni d'outil de génération de templates, c'est uniquement une bibliothèque qui peut être utilisée par n'importe quel générateur, et qui en l'occurrence est utilisée dorénavant par Creole.

Au niveau du code, il clarifie énormément Creole car il y a maintenant une vraie séparation entre le cœur, qui est le garant de la cohérence de la configuration, et le fonctionnel, qui regroupe l'édition/modification des données et la génération des configurations.

Pour en savoir plus sur la gestion de configuration (en anglais sur Wikipédia) : http://en.wikipedia.org/wiki/Configuration_management

Que fait tiramisu ?

  • il valide le type des données et le schéma des groupes de données ;
  • il rend aisé l'ajout d'un type de données ;
  • il gère la cohérence globale de la configuration et de la validation d'une option de configuration particulière par l'entremise de deux objets seulement, respectivement Config et Option ;
  • il sert véritablement des données de configuration ;
  • il permet une modification de l'état de la configuration pendant la manipulation et l'utilisation de la conf grâce à son fonctionnement JIT (just in time) calculation (avec l'ancien Creole, c'était seulement un "snapshot" à la date t de l'état de la configuration).

Qu'est-on en droit de demander à un vrai gestionnaire de configuration moderne ?

  • des données de configuration organisées (c'est une organisation arborescente car les données sont imbriquées) ;
  • un accès aux données immédiat et facile (typiquement une interface de type dictionnaire de clef/valeurs) ;
  • une manipulation aisée d'une configuration dans son ensemble et un point d'entrée unique pour qu'une donnée soit facilement accessible là où elle doit être utilisée ;
  • des clefs/valeurs, avec des valeurs à jour (c'est là que le calcul JIT (just in time) intervient).

L'espace de nommage

  • dans Tiramisu,  l'accent est mis sur l'organisation arborescente des données ;
  • la validation des options de configuration se fait par l'appartenance aux groupes (families, master/slaves...) ;
  • l'organisation en groupes est unifiée par l'espace de nommage ;
  • chaque groupe ou option de configuration possède des propriétés (frozen, disabled, hidden...) ;
  • la configuration dans son ensemble a donc un statut global (un système d'états) qui dépend des propriétés des données de configuration.

Model Checking, deadlocks, dépendances entre options, prérequis

  • les concepts purement "Creole" de "hidden if in", ou "hidden if not in"  ou "disabled if in" sont remplacés par une notion plus générique de requirements (dépendances entre options de configuration) ;
  • les validations just-in-time calculent ces dépendances et aussi les valeurs calculées ("variables automatiques", ou "fills" au sens Creole) ;
  • l'espace des états de la configuration garantit la stabilité globale et la cohérence ;
  • l'algorithmique algébrique qui sous-tend la configuration est la structure de Kripke (ce sont des machines à états étiquetés par les valuations de toutes les variables propositionnelles).

 Protocole d'accès à une valeur d'une option de configuration

  1. si l'option n'est pas définie, la configuration n'a pas cet attribut et une `AttributeError` est levée ;
  2. si une option de configuration a été déclarée mais qu'aucune valeur (ou valeur par défaut) n'a été renseignée, la valeur retournée est None ;
  3. si une option de configuration a été déclarée et qu'une valeur par défaut a été renseignée, mais pas de valeur effective, la valeur retournée est la valeur par défaut ;
  4. si une option de configuration a été déclarée et qu'une valeur a été renseignée pour cette option, c'est cette valeur qui est renvoyée.

Les sources du projet

La documentation technique du projet est disponible ici: http://tiramisu.labs.libre-entreprise.org

Les sources du projet Tiramisu se trouvent sur la forge de Libre Entreprise à l'adresse :http://labs.libre-entreprise.org/projects/tiramisu/

Commentaires

Aucun commentaire pour l'instant, soyez le premier !

Cadoles recrute !

Nous recherchons de nouveaux coopérateurs :