TX Services P19

Cette TX a été réalisée conjointement par Liam DHENIN et Guillaume DAMIENS, et suivie par Stéphane BONNET, Rémy HUET et Quentin DUCHEMIN. Ce document a vocation a rassembler tout le travail qui a été effectué dans le semestre, en mettant en lien les différentes parties en elles ainsi qu’en incorporant les liens vers les documentations écrites et vers les services mis en place.

Picasoft hébergeait déjà au début de ce semestre P19 plusieurs services :

  • une instance Mattermost, un système de messagerie open-source;
  • une instance Etherpad, un éditeur en ligne collaboratif;
  • une instance Wekan, une gestionnaire de tâche en ligne collaboratif, mais accessible uniquement en interne par les membres de Picasoft.

L’objectif était de mettre en place (en production) au moins deux nouveaux services, avec la documentation nécessaire à leur mise en production, à leur mise à jour et leur maintenance.

L’accès à la machine de test pica01-test nous a été donné en début de semestre pour nous permettre de prendre en main la technologie. Par ailleurs, un accès au wiki nous a également été donné pour permettre la rédaction de la documentation, ainsi qu’au Gitlab de Picasoft pour accéder aux ressources déjà existantes. La team technique de Picasoft, notamment Remy et Quentin nous ont également proposé leur aide lorsque nous étions sur des points bloquants.

Tout d’abord, il a fallu prendre en main la technologie Docker, comment elle est utilisée sur les serveurs de Picasoft. Cela fut possible grâce à la documentation complète disponible sur le wiki, ainsi qu’en parcourant régulièrement le Gitlab. Par ailleurs une connaissance de l’infrastructure était primordiale notamment les différentes machines et ce qu’elles contiennent. La machine de test pica01-test nous a été très utile pour apprendre Docker, en y modifiant des Dockerfiles pour en construire des images par exemple, mais aussi pour comprendre la position et l’intérêt du reverse-proxy Traefik dans l’infrastructure.

Pour commencer cet projet, la première étape obligatoire est le choix des nouveaux services à déployer. Ils doivent bien évidement être libres. Le but étant qu’ils plaisent et qu’ils soient utilisés par un maximum d’utilisateurs. Pour cela, nous avons réalisé un sondage sur la plateforme Framaforms. La question posée était la suivante : Quels types de services aimeriez-vous que Picasoft mette à diposition des étudiants ?

La question est volontairement ouverte pour laisser la possibilité aux personnes qui répondent d’expliquer leur choix. Le sondage a recueilli environ 60 réponses et les services les plus populaires parmi les réponses sont le service de sondage/formulaire, le traitement de texte, les slides de présentation et la visioconférence. Pour plus d’information, une page du wiki du wiki explique un peu plus en détail les résultats de ce sondage. De plus, nous avons contacté le service communication de l’UTC afin de publier un article dans Actualité UTC, pour permettre à notre sondage de toucher un maximum de personne. L’article est disponible ici.

Wekan était déployé sur pica02 en interne, mais il utilisait l’image officielle disponible sur quay.io. Il fallait donc créer un Dockerfile et un docker-compose pour lui faire passer l’intégration continue mise en place dans la TX sécurité A18. Dû au manque de procédure d’installation hors Dockerfile, le Dockerfile réalisé est très similaire à celui du dépôt officiel. Une fois l’image correctement construite, nous lui avons fait passé la CI.

Script de suppression des boards du Wekan

En parallèle, Picasoft souhaite mettre en place une politique de suppression des boards sur le le Wekan en production sur Bob. lorsque ceux-ci ne n’ont pas été actifs pendant un certain temps, ils doivent être supprimés. Ce script peut être facilement fait en Python mais il a été décidé de l’écrire en shell. Avec du recul, shell n’était pas le meilleur moyen d’y arriver mais le script est disponible sur le Gitlab.

Ce script est lancé depuis un conteneur, l’image est créé à partir d’un simple Dockerfile, qui, à son lancement, appel un premier script qui lui-même lance le 2e en mode dryrun ou en mode suppression suivant une variable d’environnement défini dans le Dockerfile ou dans le docker-compose. Le script de suppression utilise l’API du Wekan, à partir de laquelle sont facilement récupérables la liste des utilisateurs, la liste des boards, etc, pour peu que l’on ait accès aux identifiants d’un compte administrateur.

Lorsqu’il a été décidé par Picasoft de mettre en place un service de sondage, il nous a été demandé d’effectuer un comparatif des services de sondages libres qui existent, de la même manière que celui qui a été fait sur les services de visioconférences. Après nos recherches, nous avons trouvé 4 services qui potentiellement pourraient être mis en place publiquement par Picasoft. Les quatres services sont les suivants : Framadate, LimeSurvey, Tellform et Formtools.

FormsTools et LimeSurvey ont rapidement été écartés : en effet, le premier impose que chaque utilisateur doit être ajouté par un administrateur, et le deuxième quant à lui impose que les participants d’un sondage doivent s’inscrire, ce qui est un frein pour l’utilisation de ce type de service. Concernant Framadate, il ne dispose qu’un nombre très réduit de fonctionalités. C’est donc pour ces raisons que nous nous sommes tournés vers Tellform, qui est simple à mettre en place et semble complet.

Une étude complète est disponible sur cette page du wiki.

L’autre service mis en place était Tellform, le service de sondage que nous avons choisi d’après le sondage. Ici le Dockerfile était plus simple à réaliser, la procédure d’installation étant donnée clairement. Cependant ce service posait quelques problèmes au niveau du passage sur Docker car il n’était pas réellement adapté pour être conteneurisé. Il posait également quelques problèmes dans la configuration du mail et dans le fait que la version de développement doit être utilisée pour que Tellform fonctionne.

Le service comportait cependant quelques fonctionnalités que Picasoft ne souhaitait pas qu’il contienne : en effet, il dispose de statistiques sur les réponses données pour chaque questionnaire, il fallait supprimer l’affichage de ses statistiques ainsi que l’appel à des scripts externes, notamment ceux de Google. De plus, la page d’accueil (et d’autres pages lorsque l’utilisateur est connecté) devait être adapté et devait contenir un message d’accueil spécifique à Picasoft. La solution que nous avons optée et qui nous a été conseillée par Stéphane était la création d’un patch, qui contient la différence entre les fichiers du service de base et ceux du service modifié. La procédure pour créer un patch est expliquée dans la page de mise à jour des services.

Avant, les deux services mis en place, soient Etherpad et Mattermost, avaient chacun leur page de wiki concernant leur mise à jour. Sachant que les procédures étaient très similaires à quelques exceptions près. Il a donc été décidé de faire une page générale d'ajout et de mise à jour des services, afin de centraliser et généraliser la procédure. Si un service a besoin d’une procédure supplémentaire, ce sera indiqué à la fin de la page.

Pour conclure, l’objectif qui nous a été fixé au début de la TX est presque atteint : les deux services ne sont pas en production mais chacun a passé la CI avec succès. Tout au long du semestre nous avons eu l’opportunité de découvrir et manipuler différentes technologies, rapidement pour certaines (chiffrement PGP, architecture des serveurs Picasoft, patchs), un peu plus en profondeur pour d’autres (Dockerfiles & docker-compose, manipulation d’une API, écriture de scripts). Bien que les nouveaux services ne soient pas en production au moment où la TX se termine, nous en sortons en ayant acquis des connaissances et du savoir-faire dans les domaines cités précédemment. Nous remercions pour finir Stéphane Bonnet, Rémy Huet et Quentin Duchemin pour l’encadrement et les conseils apportés tout au long de la TX.

  • txs/infra/services_p19/synthese.txt
  • de qduchemi