Concepts

Principe d’une règle

Une règle, pour Gaspacho, est simplement (pour schématiser) un libellé.

Par exemple Configuration du serveur proxy manuelle est une règle.

Évidemment, la règle en elle-même ne sert à rien. Il faut lui associer des éléments de configuration.

Avant d’expliquer comment cela fonctionne, voici des exemples de configuration du proxy. On peut voir qu’il existe une variété de formats de fichiers de configuration.

  • Configuration du proxy sous Windows avec des clefs de registre :

    • activation du proxy :

      HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable : 1 ;

    • configuration du proxy :

      HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer : 192.168.1.1:3128

    • mise en place d’une restriction sur la modification du paramétrage du proxy :

      HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel\Proxy : 1

  • Configuration du proxy sous Mozilla Firefox avec un fichier javascript utilisateur.js :

    • activation du proxy : lockPerf("network.proxy.type", "1"); ;
    • configuration de l’IP du proxy : lockPerf("network.proxy.http", "192.168.1.1"); ;
    • configuration du port du proxy : lockPerf("network.proxy.http_port", "3128");.
  • Configuration du proxy sous GNOME avec des clefs gconf :

    • activation du proxy : /system/http_proxy/use_http_proxy True ;
    • configuration de l’IP du proxy : /system/http_proxy/host "192.168.1.1" ;
    • configuration du port du proxy : /system/http_proxy/port 3128.
  • Configuration du proxy sous OpenOffice.org avec le fichier XML ~/.ooo3/user/registry/data/org/openoffice/Inet.xcu :

    <?xml version="1.0" encoding="UTF-8"?>
    <oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        oor:name="Inet" oor:package="org.openoffice">
     <node oor:name="Settings">
      <prop oor:name="ooInetProxyType" oor:type="xs:int">
       <value>2</value>
      </prop>
      <prop oor:name="ooInetHTTPProxyName" oor:type="xs:string">
       <value>192.168.10.1</value>
      </prop>
      <prop oor:name="ooInetHTTPProxyPort" oor:type="xs:int">
       <value>8080</value>
      </prop>
     </node>
    </oor:component-data>
    

Gaspacho devra supporter l’ensemble des formats de fichiers de configuration. De plus, il devra gérer les différentes versions des logiciels et les distributions/systèmes d’exploitation.

Pour cela, chaque élément de configuration sera divisé en deux : la variable et la plateforme. La plateforme comprendra le chemin et le système.

Par exemple, il y aura :

  • variable : ProxyEnable avec la valeur 1 ;
  • plateforme : chemin : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ et système : Windows XP.

Autre exemple pour OpenOffice.org :

  • variable : ooInetProxyType dans la section Inet/Settings avec la valeur 2 ;
  • plateforme chemin : ~/.ooo3/user/registry/data/org/openoffice/Inet.xcu et système : Mandriva 2010 + OpenOffice.org 3.2.

Enfin, la règle est classée dans une étiquette lui-même classé dans une catégorie.

Ici, cette règle sera dans la catégorie “Réseau” et dans le étiquette Configuration du proxy.

En résumé, une règle Gaspacho est donc d’abord un intitulé. Mais évidemment, ce n’est pas que cela.

Les niveaux de règles

Il existe déjà deux niveaux de règles différents :

  • les règles dites “machines”, appliquées au démarrage de la machine quel que soit l’utilisateur qui s’y connecte ;
  • les règles dites “utilisateurs” qui concernent un utilisateur particulier ou un groupe d’utilisateurs. Elles sont appliquées au démarrage de la session.

Par exemple :

  • “Autoriser l’arrêt de la machine depuis la fenêtre d’ouverture de session” est une règle machine ;
  • “Configuration du proxy” est une règle utilisateur.

Les types de règle

Une fois que le niveau de règle est défini (machine ou utilisateur), il faut choisir son type.

Les types possibles sont composés de deux catégories :

  • sans valeur : boolean
  • avec valeur : unicode (un texte libre), “integer” (un chiffre), “enum” (une liste de choix prédéfinies) et “list” (une liste de choix libres).

Les types sans valeurs sont les plus simples. Par exemple cette règle n’attend aucune valeur particulière Vérifier que Firefox est le navigateur par défaut.

Alors que celle-ci attend une adresse IP Configuration du serveur proxy manuelle.

Il existe un autre type (multi) qui permet de mêler plusieurs types.

Il s’agit bien de définir ici le type de la règle (et uniquement de la règle).

Les types de variables

Le type de la règle n’agit en rien sur les types des variables associées à la règle.

Par exemple, la configuration du proxy (type unicode) sous GNOME configure trois variables de types différents :

  • /system/http_proxy/use_http_proxy de type boolean ;
  • /system/http_proxy/host de type unicode ;
  • /system/http_proxy/port de type integer.

Les valeurs

Valeurs par défaut des règles

Chaque règle avec valeur peut contenir une valeur par défaut. Celle-ci sera proposée à l’activation de la règle. Si cette valeur ne convient pas, il sera bien évidemment possible de la modifier.

Les valeurs “activées” et “désactivées” des variables

Les notions d’activation, désactivation des variables sont abordées plus en détail dans une autre section. L’essentiel, à ce stade, est de savoir que l’on peut associer une valeur fixe à une variable.

Par exemple, lors de l’activation du proxy sous GNOME, la variable /system/http_proxy/use_http_proxy aura comme valeur True. L’utilisateur n’interagit pas directement sur cette valeur.

En cas de règle avec valeur, il est possible qu’une variable ne récupère pas la valeur définie par l’utilisateur (comme le montre l’exemple juste avant). Si la variable doit récupérer la valeur, il suffit de ne pas spécifier de valeur pour la variable en question.

Les groupes

Principe

Après avoir présenté les règles Gaspacho, il faut s’attarder sur la notion de groupe.

Si l’administrateur ne devrait pas avoir besoin de gérer lui-même les règles (sauf si la règle dont il a besoin n’existe pas encore), il devra créer les groupes.

Un groupe est un ensemble de machines disposant des mêmes configurations. Il est possible d’associer des utilisateurs pour différencier les configurations suivant le profil de la personne qui se connecte à la machine.

Les groupes

Un groupe est d’abord un libellé. Il est directement visible dans l’interface de configuration.

Pour limiter le nombre de règles disponibles, ce groupe peut être lié à un ou plusieurs systèmes ou un ou plusieurs logiciels. Dans ce cas, seuls les règles concernant ces logiciels ou systèmes seront proposées.

Enfin, pour classer les groupes, un niveau est associé à chacun. Le premier groupe qui correspond aux critères de la machine se connectant sera le groupe de la machine. Pour cette raison, il est alors important de pouvoir les classer.

Les groupes de machines

Une fois défini, le groupe est lié à un ensemble de machines. Une machine est décrite soit par son adresse IP, soit par son nom DNS. Dans le nom DNS ou l’IP il est possible d’utiliser les motifs inspirés du shell Unix :

*        remplace tout
?        remplace un seul caractère
[seq]    remplace tous caractères dans "seq"
[!seq]   remplace tous caractères en dehors de "seq"

Les utilisateurs ou groupes d’utilisateurs

Le groupe peut également être lié à un ensemble d’utilisateurs. Il est possible de définir des utilisateurs ou des groupes d’utilisateurs, le nom de l’utilisateur primant sur son groupe primaire.

Si l’utilisateur n’est pas défini ou n’appartient pas aux groupes, il récupèrera directement les paramétrages du groupe.

Les templates

En plus des groupes, il existe les templates. Les templates ont les mêmes propriétés qu’un groupe sauf qu’il n’est pas possible de leur associer des groupes de machines. Les templates sont utiles dans le cadre de l’héritage. Les templates peuvent être associés à des groupes différents.

L’héritage des groupes

Le mécanisme d’héritage permet de mettre en commun des réglages pour différents groupes.

Exemple d’héritage :

default (None, user1, user2)
   |
   '--group1 (None, user1, user2)
         |
         |--group2 (None, user1, user2)
         |
         template1 (None, user1, user2)

Si l’utilisateur user1 se connecte à group2, le parcours de l’héritage se fera de la manière suivante :

user1 sur group2
group2
user1 sur group1
group1
user1 sur template1
template1
user1 sur default
default

Si l’utilisateur n’est pas user1 ni user2 :

group2
group1
template1
default

Le concept de template prend tout son sens. Les groupes ne peuvent hériter que de ses parents alors qu’un template peut concerner plusieurs groupes avec des parents complètement différents.

Les choix

Le choix est l’élément central de Gaspacho. Sans choix ... il n’y a aucun intérêt à l’utiliser.

Le choix est le lien entre la règle et le groupe.

Le choix

Le choix est donc la configuration particulière d’une règle pour un groupe ou un template (et éventuellement le groupe d’utilisateur).

Pour un groupe ou un template il est possible de définir des choix pour les règles machines et les règles utilisateurs. Par contre, pour un groupe d’utilisateurs, seul les règles utilisateurs sont paramétrables.

Si la règle n’est pas de type booléen, une valeur devra être définie en plus du choix.

Les choix

En réalité, il n’y pas un choix possible par règle mais trois :

  • choix utilisateur : c’est l’utilisateur qui choisit le paramétrage de cette option (c’est la valeur par défaut) ;
  • choix imposé désactivé : c’est l’administrateur qui choisit le paramétrage en la désactivant ;
  • choix imposé activé : c’est l’administrateur qui choisit le paramétrage en l’activant.

La valeur de la règle ne sera utile que lorsque le choix est imposé et activé.

Exemple avec l’activation du proxy :

  • choix utilisateur : l’utilisateur active ou désactive le proxy à sa convenance ;
  • choix imposé désactivé : l’administrateur impose la désactivation du proxy ;
  • choix imposé activé : l’administrateur impose l’activation du proxy et le configure suivant le paramétrage prédéfini.

Le choix et l’héritage

Lorsqu’on parle d’héritage, cela concerne bien évidemment uniquement les choix. Le premier choix détecté dans l’héritage sera appliqué à l’utilisateur.

Donc pour un groupe il y deux états pour la règle :

  • l’administrateur a spécifié un choix : il s’applique ;
  • l’administrateur n’a pas spécifié de choix : c’est le choix hérité qui s’applique.

Si l’administrateur n’a pas spécifié de choix pour les groupes hérités ou les templates hérités, c’est le choix par défaut, choix utilisateur, qui s’applique.

Les managers

Il existe deux types d’utilisateurs ayant le droit de faire des choix sur l’interface de Gaspacho :

  • les administrateurs
  • les managers

Les administrateurs ont la possibilité de créer/configurer l’ensemble des groupes/templates et peuvent faire des choix dans tous les groupes.

Un manager est une personne qui à la possibilité de faire des choix pour un ensemble de groupes ou de templates. Le manager n’a pas de pouvoir pour configurer le groupe.

Le manager sera également administrateur local sur le poste présent dans le groupe. Il aura ainsi la possibilité de faire la maintenance du groupe, d’installer ou désinstaller des programmes, ...