Gestion des modèles de serveurs

Les services applicatifs

Un modèle de serveur est constitué d’un certain nombre de « services applicatifs ». Ces services applicatifs définissent les fonctionnalités présentes sur le serveur qui utilisera le modèle de serveur (ex: serveur de fichiers, serveur Web, annuaire LDAP, etc).

Quelques notions d’importance

  • Un service applicatif n’est pas un paquet au sens d’une distribution GNU/Linux. C’est l’association d’un dictionnaire de configuration au sens EOLE, de fichiers (ou patrons de fichiers) à déployer et de paquets à installer.
  • Les services applicatifs peuvent « fournir » des services génériques (voir l’exemple ci dessous).
  • Deux services applicatifs fournissant le même service générique ne peuvent pas être installés sur un même serveur. Ils sont en conflit.
  • Un service applicatif est associé à une et une seule sous-version (release) et vice versa.
  • Un service applicatif peut avoir des dépendances envers d’autres services applicatifs, génériques ou non. Par contre, ils doivent tous être liés à la même sous-version.

Fichiers de définition

Les services applicatifs des modèles de serveur « racines » sont décrit dans des fichiers au format YAML. Ceux ci sont disponibles dans le répertoire dataModel/dataset/applicationservices/ :

  • Chaque source est déclarée par un sous répertoire <SOURCE NAME> ;
  • Chaque sous-version de chaque source est déclarée par un sous répertoire <SOUS-VERSION> dans <SOURCE NAME> contenant un fichier descriptif de la source : source.yaml ;
  • Chaque service applicatif est contenu dans son sous-répertoire <APP-SERVICE-NAME>/ et contient :
    • Le descriptif du service dans un fichier YAML : service.yaml ;
    • Des répertoires contenant les fichiers déclarés, par type de fichier :
      • Les dictionnaires dans dictionaries/ ;
      • Les dictionnaires supplémentaires dans extra_dictionaries/ ;
      • Les fonctions personnalisées de creole utilisées par GenConfig dans creole_funcs/ ;
      • Les modèles de fichier de configuration dans templates/ ;
      • Les scripts pré-service dans preservices/ ;
      • Les scripts post-service dans postservices/ ;
      • Les scripts pré-template dans pretemplates/ ;
      • Les scripts post-template dans posttemplates/ ;
      • Tous les autres fichiers dans files/, reproduisant l’arborescence où les fichiers doivent être présents.

Format du fichier de définition de la source

Le fichier de définition de la source est au format YAML et doit, dans la version 0.1, contenir les éléments suivants :

Nom de la clef type description
format String version du format
name String nom du service applicatif
release String nom du service applicatif
description Text description du service applicatif

Format du fichier de définition des services applicatifs

Le fichier de définition des services est au format YAML et doit, dans la version 0.1, contenir les éléments suivants :

Nom de la clef type description
format String version du format
name String nom du service applicatif
description Text description du service applicatif
depends List services applicatifs requis
packages List paquets systèmes requis
dictionaries List noms de fichier des dictionnaires
extra_dictionaries Dict noms de fichier des dictionnaires supplémentaires
templates List modèles de fichiers de configuration
creole_funcs List nom des fichiers de fonctions creole personalisées
preservices List nom des scripts pré-services
postservices List nom des scripts post-services
pretemplates List nom des scripts pré-templates
posttemplates List nom des scripts post-templates
files Dict fichiers fournis par les paquets

L’élément extra_dictionaries contient un dictionnaire dont les clefs sont les noms des systèmes supplémentaires :

Nom de la clef type description
bareos List noms des dictionnaires supplémentaires
schedule List noms des dictionnaires supplémentaires

L’élément files contient un dictionnaire dont les clefs sont les noms de fichiers et la valeur est un dictionnaire contenant :

Nom de la clef type description
owner Str nom du propriétaire du fichier
group Str nom du group propriétaire du fichier
mode Octal permissions d’accès au fichier

Le fichier suivant illustre la définition du service applicatif eole-amon :

---
format: 0.1
name: eole-amon
description: |-
  configuration du module EOLE : Amon
  Pour toute information complémentaire, veuillez vous rendre sur le
  site du projet EOLE.
depends:
  - eole-server
  - eole-sso
  - eole-reverseproxy
  - eole-dns
  - eole-dhcrelay
  - eole-era
  - eole-proxy
  - eole-vpn
  - eole-radius
  - eole-antivirus
  - eole-wpad
packages:
  - pppoe
  - conntrack
dictionaries:
  - 14_agregation.xml
  - 40_amon_conteneurs.xml
  - 20_vpn_amon.xml
  - 30_amon.xml
extra_dictionaries: {}
templates:
  - cron-root
  - rt_tables
  - agregation.logrotate
  - host.conf
  - amon.sudo
  - agregation.conf
creole_funcs: []
preservices: []
postservices: []
pretemplates: []
posttemplates: []
files:
  /usr/sbin/agregation.sh:
    group: root
    mode: 0755
    owner: root
  /usr/share/ead2/backend/config/actions/actions_amon.cfg:
    group: root
    mode: 0644
    owner: root
  /usr/share/ead2/backend/config/perms/perm_amon.ini:
    group: root
    mode: 0644
    owner: root
  /usr/share/ead2/backend/config/roles/roles_amon.ini:
    group: root
    mode: 0644
    owner: root
  /usr/share/eole/sbin/agregation:
    group: root
    mode: 0755
    owner: root

Le fichier suivant illustre la définition du service applicatif eole-annuaire :

---
format: 0.1
name: eole-annuaire
description: |-
  Templates et dictionnaires pour le service Annuaire EOLE
  Configuration du serveur slapd pour EOLE

  Pour toute information complémentaire, veuillez vous rendre sur le
  site du projet EOLE.
depends:
  - eole-client-annuaire
packages: []
dictionaries:
  - 20_annuaire.xml
  - 23_annuaire.xml
extra_dictionaries:
  schedule:
    - 01_annuaire.xml
templates:
  - 00_annuaire.ldif
  - default.slapd
  - slapd.conf
  - DB_CONFIG
creole_funcs: []
preservices: []
postservices: []
pretemplates:
  - 00-annuaire
posttemplates:
  - 00-annuaire
  - 02-annuaire
files:
  /etc/bareos/bareosfichiers.d/annuaire.conf:
    group: root
    mode: 0644
    owner: root
  /usr/share/eole/annuaire/password_files/annuaire.ini:
    group: root
    mode: 0644
    owner: root
  /usr/share/eole/bareos/restore/ldap.py:
    group: root
    mode: 0644
    owner: root
  /usr/share/eole/sbin/active_replication.py:
    group: root
    mode: 0755
    owner: root
  /usr/share/eole/sbin/ldap_pwd.py:
    group: root
    mode: 0755
    owner: root
  /usr/share/eole/schedule/scripts/annuaire:
    group: root
    mode: 0755
    owner: root
  /usr/share/zephir/monitor/configs/services/20_ldap.srv:
    group: root
    mode: 0644
    owner: root