Pendant mon cinquième semestre à l’ESIEA en tant qu’étudiant, j’ai eu l’opportunité de contribuer à la création d’une solution visant à simplifier l'accès aux machines virtuelles préconfigurées via une interface web, facilitant ainsi leur utilisation pour les étudiants de notre école.

Contexte

L’ESIEA, anciennement Groupe AEN pour le site d’Agen, est une école d’ingénieurs qui forme des étudiants dans le domaine des sciences et technologies du numérique. Lors de ce projet, le Groupe AEN était composé de plusieurs campus situés à Agen, Dax, Montauban, Pamiers et aux Sables-d’Olonne, et comprenait approximativement 160 étudiants en formation initiale, 109 alternants et 92 stagiaires en formation continue.

Dans le cadre de leurs études, les étudiants, principalement ceux se trouvant dans la filière des Systèmes d’Information, doivent très régulièrement installer et configurer des machines virtuelles (Windows ou Linux), que ce soit dans le cadre de travaux pratiques ou de projets informatiques. Cette action est particulièrement fastidieuse et peut faire perdre beaucoup de temps lors de ces activités.

Besoins, objectifs et attentes

Lors de ce projet, il était essentiel de répondre à plusieurs besoins identifiés par notre commanditaire, le Groupe AEN, afin de garantir une solution efficace et adaptée aux attentes des utilisateurs finaux, à savoir les étudiants et enseignants de l'ESIEA. Nous devions, en premier lieu, mettre en place une solution de déploiement automatique d'environnements de bureau, comprenant des applications présélectionnées lors de l'installation. La sécurisation de la solution et son accessibilité via un VPN étaient également des points essentiels. De plus, la capacité à générer les machines virtuelles à la demande, selon le profil de l'utilisateur (enseignant ou étudiant), ainsi que la possibilité d’y accéder via une interface web, constituaient des exigences cruciales.

En nous basant sur ces besoins exprimés par notre commanditaire, nous avons défini plusieurs objectifs à atteindre, notamment :

  • la configuration d'un serveur privé virtuel (VPS) pour stocker les machines à générer ;

  • le développement d'une interface web permettant de lancer la création et d'accéder aux machines virtuelles ;

  • la mise en place d'un VPN IPsec entre les cinq campus ;

  • la sécurisation globale de la solution.

En résumé, les attentes de notre commanditaire incluaient la mise en place d'un serveur VPN inter-campus, d'un serveur orchestrateur, d'un serveur de déploiement, ainsi que la création de scripts d'installation et de plusieurs documentations (administrateur, utilisateur, technique) pour assurer le bon fonctionnement et la facilité d'utilisation de la solution.

Rôle et équipe

La méthodologie de projet adoptée pour mener à bien ce projet était la méthodologie agile (Scrum).

Les parties prenantes étaient composées de notre Product Owner, Cédric PHILIPPOT, qui était le directeur général du Groupe AEN ; Cédric BEHE, qui était notre conseiller technique et notre enseignant en Systèmes d’Information ; et enfin Denis GORMAZ, qui était notre suiveur.

Projet

Gestion de projet - Méthodologie Agile (SCRUM)

Afin de mener à bien ce projet et de répondre aux attentes de l’école, il était nécessaire d’appliquer la méthodologie Agile, et plus spécifiquement la méthode Scrum. Étant le Scrum Master de l’équipe, cela signifiait que je me chargeais de veiller à la bonne application de la méthodologie Scrum : j’organisais et animais les réunions (sprint planning, daily, rétrospective), je guidais l’équipe dans ses tâches, etc. De plus, j’étais chargé de récupérer les informations nécessaires auprès du Product Owner (qui était également le client), afin de réaliser un Product Backlog dans lequel j’ai défini des thèmes, des epics ainsi que des user stories.

Une fois les tâches définies avec mon équipe, je les ai réparties dans quatre sprints différents d’une durée de 1 à 2 semaines. Nous avons également planifié deux réunions de livraison de projet : une après les deux premiers sprints (livraison de la première version du projet), puis l’autre à la fin des quatre sprints (livraison définitive du projet). Lors de chaque jour où nous avions des créneaux de projet informatique, nous effectuions un “daily”, qui est une réunion quotidienne durant laquelle nous expliquions ce que nous avions fait lors du dernier créneau, quels étaient les problèmes rencontrés, et ce que nous planifions de faire durant la journée.

Schéma réseau de l'infrastructure
Création des machines virtuelles - Interface Web

Pour faciliter la création des machines virtuelles pour les utilisateurs, nous devions pouvoir y accéder depuis une interface web. J’ai codé un site accessible aux étudiants et aux encadrants de l’école. Les langages utilisés pour ce site étaient : PHP, JS, HTML/CSS, avec une base de données MySQL.

Une fois les utilisateurs connectés, j’ai créé des fonctionnalités leur offrant la possibilité de créer des machines virtuelles en choisissant le nom, le système d’exploitation, les ressources nécessaires, ainsi que les applications à installer (telles qu’Apache, FileZilla, OpenVPN, etc.) parmi une liste préétablie. Ces formulaires, une fois complétés, permettaient de transférer les informations à un script Bash créé par Thibault BERTRAND, afin de créer la machine sur notre serveur.

Toutes les informations sont demandées dans un formulaire, puis envoyées dans la base de données MySQL.

Dès que la machine virtuelle est créée, il faut pouvoir s’y connecter. J’ai donc mis en place les boutons nécessaires pour pouvoir la lancer. En passant le curseur sur l'une des machines, un bouton permet de la démarrer, et un autre permet d’accéder aux informations. Lorsque vous cliquez sur le bouton "Start", une fenêtre s'ouvre avec le bureau de la machine lancée.

Pour afficher les informations d'une machine virtuelle, il suffit de cliquer sur le bouton “i”. Une fois la vignette sélectionnée, une fenêtre contextuelle s'ouvre avec diverses informations sur la machine, comme son nom, la durée de vie restante, les ressources allouées (RAM, CPU), et les outils installés. Toutes ces informations sont stockées dans notre base de données MySQL. Il est également possible de supprimer la machine en utilisant le bouton "Supprimer" dans cette fenêtre contextuelle.

Techniquement, les données des machines virtuelles sont récupérées dynamiquement depuis une base de données MySQL via PHP, puis injectées dans la structure HTML. La durée de vie restante est calculée côté client à l’aide d’un script JavaScript qui s’exécute en continu grâce à setInterval(). Lorsque la durée maximale est dépassée (3 jours après la date de fin), la machine est automatiquement masquée sur l’interface et une fonction removeVMtimer() peut être appelée pour gérer la suppression côté serveur.

Résultat du projet

Ce projet proposé par le Groupe AEN au cours de ma 3ᵉ année d’études fut très enrichissant. Cela m’a donné l’opportunité d’acquérir et d’approfondir mes compétences à la fois techniques, en raison de tous les paramètres à mettre en place, mais aussi des compétences plus diverses telles que la gestion de projet, le travail d’équipe et la communication. J’ai également pu mettre en avant les compétences que j’avais déjà acquises au fur et à mesure des semestres passés, telles que le graphisme, la conception de sites web et l’organisation d’un projet.

Tout d'abord, sur le plan technique, j'ai eu l'occasion de développer mes compétences en scripting et en développement web, notamment en travaillant sur la création de scripts pour la gestion des machines virtuelles et sur le développement de l'interface web utilisant des langages tels que PHP, JavaScript et HTML/CSS. Ce projet m'a également permis de me familiariser avec des technologies telles que VMware Workstation et j’ai découvert un nouvel outil, Myrtille, bien que cela ait été principalement à travers le travail de mes collègues à qui la tâche a été confiée.

En dehors des aspects techniques, j’ai également eu l'opportunité de développer mes compétences en gestion de projet, en travail d'équipe et en communication. En adoptant une méthodologie agile, nous avons collaboré très efficacement avec les autres membres de l'équipe pour atteindre nos objectifs dans les délais impartis. Cette expérience m'a permis d'apprendre à mieux communiquer, à organiser efficacement les tâches et à m'adapter aux changements de priorités.

Bien que le projet n’ait finalement pas été mis en place, cela aurait pu être une solution très utile pour l’ensemble des étudiants de notre école, leur permettant d’avoir un très bon environnement de travail sans avoir besoin de disposer d’ordinateurs suffisamment puissants.

En conclusion, ce projet a été l'un des plus passionnants de mon parcours scolaire. Bien que tous les objectifs n'aient pas été atteints de manière parfaite, je suis très fière des réalisations accomplies avec mon équipe. Je suis convaincue que les compétences acquises tout au long de cette expérience seront d'une grande valeur pour ma carrière professionnelle à venir.

Mon retour d'expérience

Bien que notre Product Owner fût très satisfait de notre travail, nous n'avons pas eu le temps de répondre à toutes les attentes formulées.

Ce projet d’association dans le cadre de mes études à l’ESIEA fut très enrichissant. Cela m’a donné l’opportunité d’acquérir et d’approfondir diverses compétences comme la communication sur les réseaux sociaux, la gestion d’un budget, le travail en équipe, l’organisation d’événements, et bien d’autres encore. De plus, cette expérience m’a permis d’en savoir un peu plus sur le fonctionnement d’une association.

Ma participation au projet a été essentielle, notamment à travers mon rôle de Community Manager. Mes compétences en rédaction et en utilisation de logiciels graphiques ont été très importantes tout au long de ce projet, par exemple pour la création du dossier de sponsoring ou la réalisation des posts Instagram.

En conclusion, ce projet fut passionnant et une excellente expérience dans mon parcours scolaire. Bien que tous les objectifs n’aient pas été atteints de manière parfaite, je suis très fière des réalisations accomplies avec mon équipe. Je suis convaincue que les enseignements acquis tout au long de cette expérience de création d’une association seront d'une grande valeur pour ma carrière professionnelle et dans ma vie personnelle à venir.

VirtualLaunch