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
|
## Présentation du sujet
|
||||||
|
|
||||||
Durant ces prochaines heures, vous allez devoir réaliser un service de
|
Durant ces prochaines heures, vous allez devoir réaliser un service de
|
||||||
déploiement de machines virtuelles, mettant en pratique les connaissances que
|
déploiement de *machines virtuelles* légères, mettant en pratique les
|
||||||
vous avez acquises durant le cours et le TP.
|
connaissances que vous avez acquises durant le cours et le TP.
|
||||||
|
|
||||||
N'oublier pas de lire le sujet en entier, plusieurs fois, avant de
|
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.
|
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
|
## 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
|
## Notation
|
||||||
|
|
||||||
Chaque partie du sujet rapporte un certain nombre de points tenant compte de la
|
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.
|
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
|
La première étape est de réaliser l'interface avec laquelle les utilisateurs
|
||||||
vont utiliser votre service.
|
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
|
pour stocker la liste des conteneurs lancés, de leurs configuration, des images
|
||||||
disponibles, des utilisateurs, etc.
|
disponibles, des utilisateurs, etc.
|
||||||
|
|
||||||
L'interface pourra prendre la forme d'une simple API ou de formulaires
|
L'interface pourra prendre la forme d'une simple API ou de formulaires sur des
|
||||||
classiques. Chaque étape de ce sujet donne généralement lieu à une série de
|
pages classiques. Chaque étape de ce sujet donne généralement lieu à une série
|
||||||
pages.
|
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)
|
## Recettes de déploiement (bonus)
|
||||||
|
|
||||||
Concevez les recettes de déploiement à destination d'un gestionnaire de
|
Concevez les recettes de déploiement à destination d'un gestionnaire de
|
||||||
configuration (tel qu'[Ansible](http://docs.ansible.com/)) pour construire les
|
configuration (tel qu'[Ansible](http://docs.ansible.com/)) pour construire les
|
||||||
images des conteneurs et configurer la machine qui exécutera votre service.
|
images des conteneurs et configurer la machine qui exécutera votre service.
|
||||||
|
|
||||||
|
La tarball que vous rendez doit permettre de déployer facilement (installation
|
||||||
# Gestion d'un conteneur
|
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.
|
||||||
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
|
## 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