Skip to content

Fonctionnement

Ce document détail comment les demandes de changement (encore appelées commandes) émises par la tour de contrôle circulent dans le système. Plus spécifiquement, ce document couvre :

Il est fortement conseillé de jeter un oeil au diagramme d'architecture de Towerify Cloud avant de se lancer dans la lecture de ce document.

La tour de contrôle

La tour de contrôle permet de provisionner des hôtes, d'appliquer des mises à jour système ou encore de déployer des applications. Ces modifications d'infrastructure s'effectuent via l'émission de demandes de changement.

La tour de contrôle opère sur quatre types d'entités :

  • Les serveurs sont des machines physiques ou virtuelles à laquelle la tour de contrôle peut se connecter pour exécuter des demandes de changement.
  • Les applications sont des programmes développés en interne ou provenant de notre catalogue et servant à résoudre un problème métier ou technique.
  • Les opérateurs sont les utilisateurs de la tour de contrôle. Ils administrent les hôtes ou certaines applications déployées sur les hôtes.
  • Les permissions permettent de décrire le périmètre fonctionnel des opérateurs.

Ces entités sont regroupées au sein de catalogues permettant d'administrer celles-ci aisément :

  • Le catalogue de produits permet de gérer la liste des serveurs pouvant être provisionnés par un opérateur et des applications pouvant être déployées sur ces serveurs ;
  • Le catalogue d'opérateurs permet de lister les utilisateurs de la tour de contrôle et d'attribuer ou de révoquer les permissions associées à un opérateur particulier.

Le catalogue de produits est lui-même sous-divisés en deux catégories :

  • Le catalogue de serveurs représente le matériel pouvant être provisionné par un opérateur pour être transformé en hôte ;
  • Le catalogue d'applications représente les applicatifs pouvant être déployés sur un serveur transformé en hôte.

La tour de contrôle est une application multi-tenant et peut donc être configurée pour être utilisée par plusieurs organisations simultanément.

Les hôtes

Les hôtes sont des serveurs physiques ou virtualisés appartenant à une organisation. Ils exécutent les demandes de changement émises par la tour de contrôle pour atteindre un état cible.

Il n'est pas nécessaire que la tour de contrôle soit connectée à un hôte pour que celui-ci fonctionne! En effet, il est tout à fait possible de déployer une ou plusieurs applications sur un hôte à l'aide de la tour de contrôle puis de révoquer l'accès de la tour de contrôle à l'hôte sans pour autant que les applications déployées ne cessent de fonctionner.

Contraintes...

Les hôtes provisionnés par l'organisation doivent avoir Linux Debian pour système d'exploitation. Les hôtes doivent être configurés pour être accessibles en SSH par la tour de contrôle. Lors de l'enregistrement d'un hôte auprès de la tour de contrôle, celui-ci sera reformaté pour utiliser la distribution YunoHost.

Emission d'une demande de changement

Les demandes de changement sont des petits "programmes" décrivant les actions à effectuer sur un hôte pour que celui-ci atteigne un état cible.

Les demandes de changement sont émises par un opérateur de la tour de contrôle et sont placées dans une file d'attente. Cette file d'attente est surveillée par une tâche planifiée qui a en charge de choisir la prochaine demande de changement à effectuer et de router cette demande vers l'hôte cible. Le choix de la prochaine demande de changement à exécuter est réalisé en appliquant le principe "premier arrivé, premier servi" (FIFO).

Les demandes de changement concernant des hôtes différents s'exécutent en parallèle. Cependant, à un instant donné, une unique demande de changement est en cours d'exécution sur chaque hôte.

Exécution d'une demande de changement

La demande de changement émise par la tour de contrôle est envoyée à l'hôte concerné. La demande de changement est ensuite appliquée sous forme d'une série d'étapes. Après l'exécution de chaque étape un retour est fait à la tour de contrôle pour signifier le succès ou l'échec de l'exécution de cette étape. En cas d'échec, un retour arrière est exécuté automatiquement.

Toutes les modifications réalisées sur un hôte sont tracées pour pouvoir être auditées ultérieurement.