Contrôle Continu Pratique (CCP) d’entrainement

1. Informations générales

  • M1INFO − Développement et exploitation (XMS1IE080)

  • Contrôle Continu Pratique (CCP)

  • Date : XX/XX/20XX

  • Durée : 2h

2. Consignes

Le travail doit être réalisé sur les machines de TP de la salle informatique, et non à l’aide de vos machines personnelles.

Il est interdit de communiquer entre vous (ou avec quelqu’un d’extérieur), que ce soit dans la salle, ou par moyen numérique (échange de fichiers, messagerie instantanée, etc.).

Il est autorisé de demander de l’aide à l’enseignant, notamment en cas de problème technique. L’enseignant par contre n’est jamais obligé de vous répondre, notamment s’il estime que c’est à vous de connaître la réponse.

Vous n’avez accès que à certaines ressources numériques, qui incluent notamment le site web du cours, l’espace Madoc du cours, et bien entendu le Gitlab de l’université. Vous avez aussi accès à certaines documentations des outils que nous demandons de déployer.

Une tentative d’outrepasser ces restrictions − pour accéder à des ressources en ligne non autorisées, pour s’aider d’une IA, pour communiquer avec une personne extérieure, etc. − pourra être sanctionnée. Dans le doute, demandez à l’enseignant.

3. Rendu de votre travail

Votre travail devra être rendu sous deux formes :

  • Chaque exercice vous demande d’accomplir des tâches à l’aide de commandes et/ou à l’aide d’un Containerfile. Vous devrez saisir toutes vos commandes et/ou votre Containerfile dans le questionnaire Contrôle Continu Pratique (CCP) qui sera ouvert sur la page Madoc du cours pour la durée de l’épreuve.

Une fois votre formulaire validé vous ne pourrez plus le modifier ! Cela équivaut à "rendre votre copie" !
  • Chaque exercice se termine par un déploiement réel sur l’environnement cible "podman". Dès vous avez terminé un déploiement, vous devrez le montrer à l’enseignant via votre navigateur web pour qu’il le note.

  • Vous devrez obligatoirement signer la "feuille d’appel" numérique la page Madoc dédiée.

Le barème est donné à titre indicatif et est susceptible de changer.

4. OBLIGATOIRE: remise à zéro de Podman

Avant toute chose, faites un premier accès SSH vers l’environnement de déploiement :

$ ssh podman

Puis faites la commande suivante pour faire intégralement le ménage de vos contenus Podman (images, conteneurs, networks, etc.) :

$ podman system reset
Cette étape est nécessaire pour garantir que votre travail durant cette évaluation ne sera pas "gêné" par vos précédents TPs avec Podman.

5. Exercice 1 − Déploiement de DokuWiki pré-conteneurisé

environ 4 points

5.1. Énoncé

On souhaite déployer une instance de DokuWiki, un logiciel permettant de créer un wiki.

On décide d’utiliser l’image de conteneur officielle Dokuwiki sur le registre de conteneur du Docker Hub. En lisant notamment la documentation de l’image, on connaît les informations utiles suivantes :

  • Le nom de cette image est dokuwiki/dokuwiki et elle est disponible sur le registre de conteneurs docker.io,

  • Le point d’entrée de l’image est l’exécution du serveur web DokuWiki,

  • Ce serveur web écoute par défaut sur le port 8080 du conteneur,

  • Pour un fonctionnement de base, DokuWiki n’a pas besoin d’être configuré,

  • DokuWiki stocke ses données de travail dans le répertoire /storage du conteneur. Ces données sont importantes car elles contiennent toutes les pages du wiki.

5.2. Questions

  1. Réalisez un déploiement d’un service DokuWiki en suivant avec les contraintes suivantes:

    • Le nom du conteneur DokuWiki doit être dokuwiki_instance.

    • L’image de conteneur DokuWiki utilisée doit être celle correspondant à l’étiquette stable.

    • L’application DokuWiki doit être accessible par une publication de port (n’oubliez pas d’utiliser un port de votre plage de ports individuelle autorisée, en vous référant au tableau disponible sur Madoc),

    • Les données de travail DokuWiki doivent être persistées dans l’environnement de déploiement.

  2. Une fois le service en exécution, utilisez Firefox depuis votre poste de travail Linux pour accéder à la page d’accueil de DokuWiki, en utilisant la publication de port que vous avez réalisée.

  3. Une fois sur la page d’accueil, testez l’application de la manière suivante :

    • Dans la barre à droite, allez vers l’icône crayon et cliquez sur Create this page.

    • Dans la boîte de texte, écrivez CCP XMS1IE080 suivi de votre nom et prénom, puis faites Save.

Une fois tout votre travail terminé, vous devrez :

  1. Répondre aux questions concernant l’exercice dans le questionnaire Contrôle Continu Pratique (CCP) ouvert sur la page Madoc du cours (ces questions vous demandent de retranscrire toutes les commandes dont vous avez eu besoin pour faire votre déploiement),

  2. Appeler l’enseignant et lui montrer votre déploiement réalisé à l’aide d’un navigateur web.

6. Exercice 2 − Conteneurisation et déploiement de NanoShare

environ 8 points

6.1. Énoncé

On souhaite mettre au point une image de conteneur pour le logiciel Nanoshare, qui permet à des utilisateurs de téléverser et télécharger des fichiers. Le code source et la documentation du logiciel sont disponibles dans un projet dédié du Gitlab de l’université.

Informations utiles :

  • Le logiciel est développé à l’aide du langage Go,

  • Afin de compiler un code source écrit en Go, il est nécessaire de pouvoir utiliser la commande go,

  • La commande go est disponible dans l’image de base Go officielle :

    • Cette image est disponible sur le registre de conteneur docker.io,

    • Cette image a pour nom golang,

    • Une étiquette valide pour cette image est 1.23.4.

Contraintes à respecter : Lors de la création d’un conteneur à partir votre image, on souhaite pouvoir spécifier :

  • Le mot de passe administrateur que l’on souhaite,

  • Un emplacement de l’environnement de déploiement dans lequel NanoShare stockera ses fichiers.

6.2. Questions

  1. Construisez une image de conteneur permettant de facilement déployer Nanoshare. Cette image doit avoir pour nom nanoshare et pour étiquette v1 Vous avez le choix entre deux manières de procéder :

    • Soit vous préparez votre image de conteneur manuellement (rapporte un peu moins de points),

    • Soit vous préparez votre image de conteneur en automatisant à l’aide du langage Containerfile (rapporte un peu plus de points).

  2. Effectuez un déploiement de NanoShare à l’aide de votre image créée localement, en respectant les contraintes suivantes :

    • Le nom du conteneur NanoShare doit être nanoshare_instance.

    • L’application NanoShare doit être accessible par une publication de port (n’oubliez pas d’utiliser un port de votre plage de ports individuelle autorisée, en vous référant au tableau disponible sur Madoc),

    • Les fichiers stockés par NanoShare doivent être stockés dans l’environnement de déploiement.

  3. Testez votre déploiement à l’aide d’un navigateur:

    • Faites Log In tout en haut à droite,

    • Saisissez le mot de passe administrateur et faites Authenticate,

    • Sur votre machine, préparez un fichier texte appelé nom-prenom.txt en remplaçant nom par votre nom et prenom par votre prénom.

    • Cliquez sur Choose a file… et sélectionnez votre fichier créé à l’étape précédente.

    • Dans le menu tout en haut, allez dans Files, et constatez que votre fichier est bien présent.

Une fois tout votre travail terminé, vous devrez :

  1. Répondre aux questions concernant l’exerice dans le questionnaire Contrôle Continu Pratique (CCP) sur la page Madoc du cours (ces questions vous demandent de retranscrire votre Containerfile, ainsi que toutes les commandes dont vous avez eu besoin pour faire votre image et votre déploiement)

  2. Appeler l’enseignant et lui montrer votre déploiement réalisé à l’aide d’un navigateur web.

7. Exercice 3 − Déploiement de Wiki.js pré-conteneurisé

environ 8 points

7.1. Énoncé

On souhaite déployer une instance de Wiki.js, un logiciel web permettant de gérer un wiki collaboratif.

Ce logiciel nécessite une base de données pour fonctionner, par exemple une base de type PostgreSQL. On choisit d’utiliser l’image de conteneur officielle PostgreSQL située sur le Docker Hub. En lisant la documentation de l’image, on observe que :

  • Le nom de cette image est postgres et elle est disponible sur le registre de conteneurs docker.io,

  • Le point d’entrée de l’image est l’exécution du logiciel PostgreSQL,

  • Les fichiers de la base de données sont stockés dans le répertoire /var/lib/postgresql/data du conteneur,

  • Par défaut, le logiciel PostgreSQL écoute sur le port 5432 du conteneur,

  • Par défaut, lors du premier lancement d’un conteneur, un compte PostgreSQL est créé, ainsi qu’une base de données vide à laquelle ce compte peut accéder. Des variables d’environnement sont disponibles pour configurer cela :

    • POSTGRES_USER permet de spécifier l’identifiant du compte PostgreSQL,

    • POSTGRES_PASSWORD, permet de spécifier le mot de passe du compte POSTGRES_USER,

    • POSTGRES_DB permet de spécifier le nom de la base de données créée pour le compte POSTGRES_USER.

Concernant Wiki.js, on décide d’utiliser une image de conteneur spéciale préparée pour cet examen (avec un petit correctif nécessaire), disponible sur le registre de conteneur du Gitlab de l’université. En lisant notamment la documentation de l’image, on connaît les informations utiles suivantes :

  • Le nom de cette image est gl/developpement_exploitation/resources/wikijs-container-offline et elle est disponible sur le registre de conteneurs docker-registry.univ-nantes.fr,

  • Le point d’entrée de l’image est l’exécution du serveur web Wiki.js,

  • Ce serveur web écoute par défaut sur le port 3000 du conteneur,

  • Les variables d’environnement suivantes sont comprises par Wiki.js :

    • DB_TYPE indique à Wiki.js le type de base de données à utiliser. Il faut donner à cette variable la valeur postgres afin de lui indiquer que nous souhaitons nous connecter à un serveur de base de données PostgreSQL.

    • DB_HOST indique à Wiki.js le nom d’hôte du serveur de base de données à utiliser.

    • DB_PORT indique à Wiki.js quel port réseau utiliser pour se connecter au serveur de base de données.

    • DB_USER indique à Wiki.js quel identifiant utiliser pour se connecter au serveur de base de données.

    • DB_PASS indique à Wiki.js quel mot de passe utiliser pour se connecter au serveur de base de données.

    • DB_NAME indique à Wiki.js quelle base de donnée utiliser au sein au serveur de base de données.

7.2. Questions

  1. Réalisez un déploiement d’un service Wiki.js, sous la forme d’un conteneur Wiki.js relié à un conteneur PostgreSQL en suivant avec les contraintes suivantes:

    • Le nom du conteneur Wiki.js doit être wikijs_instance.

    • Le nom du conteneur PostgreSQL doit être wikijs_db.

    • L’image de conteneur Wiki.js utilisée doit être celle correspondant à l’étiquette latest.

    • L’image de conteneur PostgreSQL utilisée doit être celle correspondant à l’étiquette 17.2.

    • L’application Wiki.js doit être accessible par une publication de port (n’oubliez pas d’utiliser un port de votre plage de ports individuelle autorisée, en vous référant au tableau disponible sur Madoc),

    • Les fichiers de la base de données PostgreSQL doivent être stockés dans l’environnement de déploiement.

  2. Une fois les conteneurs en exécution, utilisez Firefox depuis votre poste de travail Linux pour accéder à la page d’accueil de Wiki.js, en utilisant la publication de port que vous avez réalisée.

  3. Une fois sur la page d’accueil qui indique "You are about to install Wiki.js", testez l’application de la manière suivante :

    • Faites la configuration initiale avec les informations factices suivantes :

      • Administrator Email : administrator@domain.tld

      • Password : administrator

      • Site URL : laisser la valeur par défaut

      • Telemetry : décocher

    • Une fois le message "Installation complete" affiché, vous arrivez sur la page d’accueil. Authentifiez vous avec les informations factices (administrator@domain.tld et administrator).

    • Choisissez Create home page puis Visual Editor

    • Mettez comme titre CCP XMS1IE080, puis faites OK en haut à droite.

    • Saisissez comme contenu de page votre prénom, nom et numéro étudiant, puis faites Create en haut à droite.

Une fois tout votre travail terminé, vous devrez :

  1. Répondre aux questions concernant l’exercice dans le questionnaire Contrôle Continu Pratique (CCP) sur la page Madoc du cours (ces questions vous demandent de retranscrire toutes les commandes dont vous avez eu besoin pour faire votre déploiement),

  2. Appeler l’enseignant et lui montrer votre déploiement réalisé à l’aide d’un navigateur web.