Subject almost done
This commit is contained in:
parent
5578b501a3
commit
7d680b35ef
6
subject/Makefile
Normal file
6
subject/Makefile
Normal file
@ -0,0 +1,6 @@
|
||||
all: subject.pdf
|
||||
|
||||
.md.pdf:
|
||||
pandoc --latex-engine=xelatex --toc --normalize -o $@ $<
|
||||
|
||||
.SUFFIXES: .md .tex .pdf
|
@ -3,16 +3,27 @@
|
||||
## 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.
|
||||
déploiement de *machines virtuelles* légères, 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é.
|
||||
## Quelques conseils
|
||||
|
||||
* L'utilisation d'un gestionnaire de version est fortement recommandé.
|
||||
* N'hésitez pas à préférer utiliser les API (et leur bindings) plutôt
|
||||
que de faire des appels à des fonctions de type `system(3)`.
|
||||
|
||||
## Modalités de rendu
|
||||
|
||||
L'heure du rendu est fixé au dimanche 30 novembre 2014 à 11h42 CET.
|
||||
|
||||
Il est attendu que vous rendiez une tarball contenant un ou plusieurs
|
||||
`Dockerfile` permettant d'obtenir l'interface de contrôle des conteneurs,
|
||||
accompagnés d'un script automatisant le déploiement de la solution sur une
|
||||
nouvelle machine.
|
||||
|
||||
## Notation
|
||||
|
||||
Chaque partie du sujet rapporte un certain nombre de points tenant compte de la
|
||||
@ -20,8 +31,9 @@ difficulté.
|
||||
|
||||
L'accent sera mis sur le respect des bonnes pratiques.
|
||||
|
||||
# Étapes de réalisation
|
||||
|
||||
# Interface utilisateur
|
||||
## Interface utilisateur
|
||||
|
||||
La première étape est de réaliser l'interface avec laquelle les utilisateurs
|
||||
vont utiliser votre service.
|
||||
@ -34,35 +46,70 @@ 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.
|
||||
L'interface pourra prendre la forme d'une simple API ou de formulaires sur des
|
||||
pages classiques. Chaque étape de ce sujet donne généralement lieu à une série
|
||||
de pages.
|
||||
|
||||
|
||||
# Recettes de déploiement (bonus)
|
||||
## 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é
|
||||
La tarball que vous rendez doit permettre de déployer facilement (installation
|
||||
de dépendance et docker build) votre solution ; prévoyez un script (non
|
||||
optionel) si plus d'étape sont nécessaire pour construire vos conteneurs.
|
||||
|
||||
|
||||
# Quota disque
|
||||
## Gestion d'un conteneur
|
||||
|
||||
Pour cette étape, votre site doit être en mesure de lancer et d'arrêter un
|
||||
conteneur que vous aurez préalablement créé.
|
||||
|
||||
Le choix de la technologie de virtualisation est laissé à votre
|
||||
discrétion.
|
||||
|
||||
Dans un premier temps, vous pouvez lancer vos conteneurs sans considération de
|
||||
sécurité, en donnant tous les privilèges au conteneur de votre site, puis dans
|
||||
un second temps, organisez une séparation des privilèges pour qu'un exploit sur
|
||||
votre site ne remette pas en cause la sécurité de l'ensemble de la machine.
|
||||
|
||||
|
||||
# Bridge
|
||||
## Lancement de conteneur à partir de templates
|
||||
|
||||
Maintenant que vous êtes capable de lancer et d'arrêter un conteneur,
|
||||
laissez la possibilité à l'utilisateur de lancer un nouveau conteneur à partir
|
||||
d'un template LXC ou d'une image Docker.
|
||||
|
||||
À la fin de l'étape, vous devez être capable de lancer n'importe quel template
|
||||
ou image.
|
||||
|
||||
|
||||
## Quota disque (bonus)
|
||||
|
||||
Permettez à l'utilisateur de configurer l'espace disque dont il disposera dans
|
||||
sa nouvelle machine virtuelle.
|
||||
|
||||
Cela peut se faire via l'utilisation d'un système de fichier gérant les quotas
|
||||
(XFS, Btrfs, ...) ou via LVM.
|
||||
|
||||
|
||||
## Quota CPU/RAM/Réseau
|
||||
|
||||
Laissez la possibilité à l'utilisateur de configurer la quantité de mémoire
|
||||
maximale que le conteneur peu utiliser ainsi que de permettre la limitation de
|
||||
l'utilisation du CPU. Donner également la possibilité de limiter la bande
|
||||
passante.
|
||||
|
||||
|
||||
## Configuration réseau
|
||||
|
||||
Faites en sorte que l'utilisateur puisse exposer des ports de son conteneur sur
|
||||
des ports de la machine hôte.
|
||||
|
||||
|
||||
## Configuration réseau (avancé)
|
||||
|
||||
Mettez en place l'une des solutions de virtualisation réseau vue en cours,
|
||||
permettant d'assigner à chaque conteneur une IP non-NATée.
|
||||
|
Loading…
Reference in New Issue
Block a user