From d6d2fa52823488372708b0af3a852d2eab2df5ad Mon Sep 17 00:00:00 2001 From: nemunaire Date: Mon, 19 Feb 2018 13:35:08 +0100 Subject: [PATCH] subject/1: update the subject with latest FIC release --- subject/1/project.md | 59 ++++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/subject/1/project.md b/subject/1/project.md index f228415..a5b6935 100644 --- a/subject/1/project.md +++ b/subject/1/project.md @@ -22,7 +22,9 @@ Voici les notes retrouvées dans les derniers échanges avec le sous-traitant : > go build -o $GOPATH/src/srs.epita.fr/fic-server/fic-frontend srs.epita.fr/fic-server/frontend > > # Configuration de la base de données : par défaut tous les composants vont se connecter à -> # fic:fic@localhost/fic, voir l'option -dsn pour d'autres paramètres +> # fic:fic@localhost/fic, voir l'option -dsn pour d'autres paramètres. Les variables +> # d'environnement MYSQL_HOST, MYSQL_PASSWORD, MYSQL_USER et MYSQL_DATABASE permettent +> # également de construire le DSN. > mysql -u root -p < CREATE DATABASE fic; > CREATE USER fic@localhost IDENTIFIED BY 'fic'; @@ -30,6 +32,8 @@ Voici les notes retrouvées dans les derniers échanges avec le sous-traitant : > EOF > > cd $GOPATH/src/srs.epita.fr/fic-server/ +> mkdir SETTINGS +> # Ce dossier va contenir les paramètres du challenge > ./fic-admin & > # À ce stade http://localhost:8081/ permet d'accéder à l'interface d'admin > @@ -47,7 +51,7 @@ Voici les notes retrouvées dans les derniers échanges avec le sous-traitant : > # vulnérabilités. > # Un nginx est nécessaire au dessus pour gérer l'authentification. > -> Un exemple de conf nginx est disponible dans la branche f/ansible : +> Un exemple de conf nginx est disponible dans la branche `f/ansible` : > > - la version utilisant un simple `htpasswd` : > @@ -56,8 +60,7 @@ Voici les notes retrouvées dans les derniers échanges avec le sous-traitant : > l'environnement de préproduction, on se base sur le LDAP de la boîte) > > -> - la version utilisant les certificats clients : qui n'a pas été -> commitée encore. +> - la version utilisant les certificats clients : `configs/nginx-prod.conf` > > Il faut ajouter un binding certificat/remote_user -> team, dans le > fichier `/etc/nginx/auth.conf`. @@ -66,10 +69,24 @@ Voici les notes retrouvées dans les derniers échanges avec le sous-traitant : > - pour l'auth HTTP : . > > En production, le frontend est déporté sur une autre machine et un `rsync` -> s'occupe de synchroniser les dossiers submissions et TEAMS des deux +> s'occupe de synchroniser les dossiers `submissions` et `TEAMS` des deux > machines. Ainsi, la machine validant les solutions et contenant toutes > les données n'est jamais accessible du réseau local, c'est elle qui -> initie les rsync de manière régulière. +> initie les `rsync` de manière régulière (`configs/synchro.sh`) +> +> Un mécanisme de synchronisation permet d'importer le challenge à partir d'un +> WebDAV : il faut pour cela utiliser les options `-clouddav`, `-clouduser` et +> `-cloudpass`. Par exemple : +> +> [ -z "${FICCLOUD_PASS}" ] && read -p 'FICCLOUD_PASS: ' -s FICCLOUD_PASS; \ +> ./fic-admin -clouddav "https://owncloud.srs.epita.fr/remote.php/webdav/FIC 2018" \ +> -clouduser login_x -cloudpass "${FICCLOUD_PASS}" +> +> Il est également possible, après avoir monté le webDAV avec FUSE ou en ayant +> téléchargé son contenu dans un répertoire, d'utiliser un répertoire local, +> via l'option `-localimport` : +> +> ./fic-admin -localimport /mnt/fic/ -localimportsymlink ![Vue d'ensemble des échanges de données entre les services](FIC-overview.png) @@ -93,12 +110,12 @@ et/ou exposent. Vous devriez pouvoir lancer `docker container run nemunaire/fic-IMAGE --help` sur les images. -Durant la durée du projet, les images seront peut-être amenés à être mis à +Durant la durée du projet, les images seront peut-être amenées à être mises à jour, si vous vous trouvez bloqué, commencez par vérifier que vous avez bien la dernière version disponible de l'image : ```shell -docker pull nemunaire/fic-admin nemunaire/fic-backend nemunaire/fic-frontend + docker pull nemunaire/fic-admin nemunaire/fic-backend nemunaire/fic-frontend ``` @@ -109,11 +126,11 @@ inscrivant tout ça dans un fichier YAML, compréhensible par `docker-compose` ! Vous devriez avoir ces services : -* `mariadb` (ou `mysql`) -* `admin` -* `backend` -* `frontend` -* `nginx` (ou `apache`, ...) +* `mariadb` (ou `mysql`), +* `admin`, +* `backend`, +* `frontend`, +* `nginx` (ou `apache`, ...). ### Palier 2 : retrouver les `Dockerfile` @@ -124,9 +141,9 @@ plus dépendre d'une image que l'on ne peut plus modifier facilement. Pour ce palier, vous allez devoir réécrire les trois fichiers `Dockerfile`, pour chacun des service : -* admin -* backend -* frontend +* `admin`, +* `backend`, +* `frontend`. Arriverez-vous à générer des images plus propres que celles du prestataire disparu ?! @@ -141,17 +158,17 @@ l'équivalent de bibliothèques). Vous allez sans doute vouloir placer les trois `Dockerfile` à la racine pour simplifier les étapes de construction des images : ```shell -docker image build --file Dockerfile-admin . + docker image build --file Dockerfile-admin . ``` Les [*multi-stage builds*](https://docs.docker.com/engine/userguide/eng-image/multistage-build/) vous seront d'une grande aide. -Si vous n'avez pas le choix d'utiliser une vieille version de Docker qui ne -supporte pas la syntaxe au sein d'un seul fichier, vous pouvez ajouter des -scripts et autant de `Dockerfile` que nécessaire à la tarball (mais vous -devriez considérer l'option de mettre à jour votre Docker). +Si vous n'avez pas la possibilité d'utiliser une version récente de Docker qui +supporte cette syntaxe, vous pouvez ajouter des scripts et autant de +`Dockerfile` que nécessaire à votre rendu (mais vous devriez considérer +l'option de mettre à jour votre Docker !). ### Palier 3 : `fic-server.yml` prêt pour le déploiement