# Introduction ## Présentation du sujet Durant ces prochaines heures, vous allez devoir réaliser un service de déploiement de machines virtuelles, mettant en pratique les connaissances que vous avez acquises durant le cours et le TP. N'oublier pas de lire le sujet en entier, plusieurs fois, avant de commencer. Vous n'êtes pas forcément tenu de réaliser les étapes dans l'ordre. L'utilisation d'un gestionnaire de version est fortement recommandé. ## Modalités de rendu ## Notation Chaque partie du sujet rapporte un certain nombre de points tenant compte de la difficulté. L'accent sera mis sur le respect des bonnes pratiques. # Interface utilisateur La première étape est de réaliser l'interface avec laquelle les utilisateurs vont utiliser votre service. Le langage (et le framework si besoin) est laissé à votre discrétion parmi [Perl Dancer](https://metacpan.org/pod/Dancer), [Python Django](http://djangoproject.com/) ou encore [PHP](http://php.net/). Vous allez avoir besoin d'une base de données (MySQL/MariaDB ou PostgreSQL) pour stocker la liste des conteneurs lancés, de leurs configuration, des images disponibles, des utilisateurs, etc. L'interface pourra prendre la forme d'une simple API ou de formulaires classiques. Chaque étape de ce sujet donne généralement lieu à une série de pages. Il est attendu pour cette étape que vous rendiez un ou plusieurs `Dockerfile`, accompagnés d'un script permettant de construire les images et de lancer une première fois votre site. # Recettes de déploiement (bonus) Concevez les recettes de déploiement à destination d'un gestionnaire de configuration (tel qu'[Ansible](http://docs.ansible.com/)) pour construire les images des conteneurs et configurer la machine qui exécutera votre service. # Gestion d'un conteneur Pour cette étape, votre site doit être en mesure de lancer et arrêter des containers (nous vous laissons le choix de la technologie). ## Basique Lancer les containers ## Un peu plus de sécurité # Quota disque # Bridge