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.

Exemple de fichier de définition

Ce fichier illustre la définition d’un service applicatif roundcube dépendant des services génériques web et mta et d’un service parmi mysql-database et postgres-database.

# Chaque service est associé à une entrée de premier niveau dans le fichier YAML.
#
# Les dépendances sont indiquées via l'attribut "depends".
# Cet attribut est une collection des noms des services applicatifs et/ou
# d'opérateurs logiques.
#
# Actuellement, seul l'opérateur "or" est disponible.
- name: roundcube
  depends:
    - web                     # Dépendance vers le service générique "web" (service fournissant un serveur HTTP)
    - mta                     # Dépendance vers le service générique "mta" (service fournissant un agent de transfert de courriel)
    - or:                     # Ce service dépend de la présence d'un des deux services listés ci dessous
        - mysql-database
        - postgres-database

- name: nginx-server
  provides:                   # Ce service applicatif "fournit" un service générique.
    - web

- name: pache-server
  provides:
    - web

- name: mysql-database        # Ces services n'ont pas de dépendances particulières ni ne fournissent de service générique.
- name: postgres-database

- name: mta-exim4
  provides:                   # Ce service applicatif "fournit" un service générique.
    - mta

- name: mta-postfix
  provides:                    # Ce service applicatif "fournit" un service générique.
    - mta