IMA4 2016/2017 ECP2

De Wiki de Projets IMA
Révision datée du 3 juin 2017 à 06:42 par Rex (discussion | contributions) (Description du projet)

Présentation du projet

Contexte

L'élève effectue son stage en Roumanie et dispose d'un PC avec une machine virtuelle Linux. Une connexion Internet stable est disponible.

Objectif

Il vous est demandé de concevoir une architecture système et réseau permettant de créer et de détruire facilement des conteneurs pour sites Web personnels. Les conteneurs doivent être créés sans utiliser d'usine à gaz de gestion de conteneurs (typiquement l'environnement Docker).

Description du projet

D'un point de vue système, les conteneurs seront créés en utilisant l'utilitaire Linux unshare. Vous devez créer un conteneur avec son propre espace disque et sa propre table de processus. Vous utiliserez ensuite les cgroups pour limiter la mémoire et l'espace disque accessibles par les conteneurs. Consultez https://ericchiang.github.io/post/containers-from-scratch/ pour plus de détails.

D'un point de vue réseau vous utilisez la commande ip pour créer une interface virtuelle eth0 dans le conteneur en liaison avec une interface miroir dans le système d'exploitation hôte. L'interface miroir se trouvera dans un commutateur logiciel créé par la commande brctl. Les conteneurs seront ainsi accessible par réseau du système hôte. Consultez http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/ pour plus détails.

Concernant le système de fichiers du conteneur, vous le construirez en utilisant l'utilitaire debootstrap. Un conteneur doit faire tourner un serveur ssh, un serveur Web et un serveur de base de données.

Vous prendrez soin d'écrire un script de création et de destruction de conteneur mais aussi un script de relance des conteneurs en cas de redémarrage du système hôte. Le script de création s'occupe de créer le système de fichiers et d'affecter une adresse IP. Le script de lancement effectue les commandes nécessaires pour lancer, de façon isolée, le processus initial du conteneur, de créer l'interface réseau du conteneur et de lancer les processus nécessaires à la gestion du site Web.

Un système de redirection de ports doit permettre à un utilisateur de se connecter d'Internet, par ssh, à son conteneur. L'accès aux sites Web se fera par un mandataire inverse tournant sur la machine hôte.

Cahier des charges

Planning prévisionnel

Travail effectué

Documents