🗒️ Notice : environnement de déploiement
Un serveur vous est mis à disposition comme environnement de déploiement pour apprendre à y déployer des logiciels, et pour expérimenter l’usage du moteur de conteneurisation Podman. Sur le réseau interne de la faculté des sciences et techniques, il est accessible sous le nom d’hôte “podman” .
Quelques caractéristiques importantes de cet environnement d’accueil :
-
On ne peut accéder à ce serveur que depuis le réseau interne de l’université. Vous ne pouvez notamment pas vous y connecter depuis l’extérieur de l’université (sauf via eduVPN).
-
On ne peut pas y ouvrir de session graphique, et la seule manière de s’y connecter est au travers du protocole SSH, via un terminal et à l’aide d’un clavier. Voir Section 1.
-
Le moteur de conteneurisation Podman y est installé. C’est dans cet environnement que vous apprendrez à manipuler des images et à déployer des conteneurs.
-
Votre répertoire étudiant habituel n’est pas accessible depuis ce serveur. Vous possédez à la place un répertoire utilisateur uniquement pour ce serveur, non partagé avec votre répertoire étudiant habituel. Cela permet d’éviter que vos expériences de déploiement aillent altérer ou détruire vos données utilisateur habituelles.
-
On ne peut accéder à ce serveur que par les ports réseau 8080 à 9089 (sans compter le port 22 utilisé par SSH). Ainsi, vos déploiements devront toujours écouter sur des ports de cette intervalle, et plus précisément sur les ports d’un intervalle qui vous sera attribué individuellement, voir Section 2.1.
1. Se connecter au serveur de déploiement
Le protocole SSH est un protocole réseau standardisé permettant de se connecter de manière sécurisée à un environnement Linux distant.
Même si différents outils existent pour créer une connexion SSH, le plus fréquent est d’utiliser l’utilitaire ssh du même nom.
Cet utilitaire s’utilise uniquement via une interface textuelle depuis un terminal.
Le serveur de déploiement auquel on souhaite se connecter est accessible par le nom d’hôte podman.
1.1. Se connecter avec mot de passe
Pour se connecter par SSH au serveur de déploiement, il faut appeler l’outil ssh en lui indiquant qu’on souhaite se connecter sur l’environnement podman à l’aide du même identifiant que son compte université habituel :
$ ssh EXXXXXX@podman
en remplaçant EXXXXXX par son identifiant étudiant habituel.
| Il est nécessaire d’écrire votre identifiant étudiant en MAJUSCULES. |
|
Si c’est la première fois que vous vous connectez, vous aurez un message similaire à celui-ci :
Ce message est parfaitement normal : il permet (si besoin) de vérifier l’identité du serveur SSH auquel vous vous connectez, et de confirmer explicitement en saisissant Une fois ce message vu une première fois, il ne s’affichera plus par la suite, car le serveur SSH sera mémorisé comme "sûr". |
Il faut alors saisir votre mot de passe dans une boîte de texte invisible, puis valider.
Mais on peut observer que vous êtes normalement déjà connecté⋅e avec un compte utilisateur eXXXXXX sur la machine de TP que vous utilisez.
On peut donc simplifier la commande précédente en omettant l’identifiant de connexion à utiliser, car EXXXXXX sera utilisé par défaut :
$ ssh podman
Une fois la connexion établie, vous verrez que votre invite de commande (aussi appelé prompt) aura changé de couleur, et ressemble désormais à :
EXXXXXX@podman:~$
Vous êtes désormais en connexion à distance sur le serveur de déploiement ! Toutes les commandes que vous exécutez ici se produiront sur ce serveur distant, et non sur le poste devant lequel vous vous trouvez.
Par exemple si vous exécutez la commande :
$ ls
vous pourrez observer que les fichiers ne sont pas identiques à ceux de votre répertoire étudiant habituel.
De même, si vous exécutez la commande :
$ firefox
vous aurez en retour le message commande introuvable, car Firefox n’est pas installé sur le serveur de déploiement.
Par contre, si vous exécutez la commande :
$ podman --version
vous aurez alors un retour vous indiquant la version installée de Podman.
Enfin, pour quitter la session SSH, faire simplement la commande :
$ exit
1.2. Se connecter avec une clé SSH
Avec la méthode présentée plus haut, il est nécessaire de saisir un simple mot de passe à chaque connexion SSH. Pour rendre plus sûres et plus rapides vos connexions SSH, il est possible d’activer la connexion par clé SSH, qui remplace alors la connexion par mot de passe.
Pour cela vous devez avoir au préalable généré votre clé SSH personnelle comme indiqué dans la section dédiée de la notice infrastructure.
Si cela est déjà fait, la commande suivante permet de mettre en place la connexion par clé SSH au serveur de déploiement (à ne faire qu’une seule fois) :
$ ssh-copy-id podman
Il faut alors saisir votre mot de passe utilisateur, nécessaire pour ouvrir une brève connexion SSH pour copier la clé.
Et normalement tout est désormais bon ! Pour tester, faites :
$ ssh podman
et la connexion se fera à l’aide de votre clé SSH et sans nécessiter votre mot de passe de connexion.
2. Utiliser le serveur de déploiement
Une fois connecté sur le serveur, on peut utiliser Podman comme présenté dans le cours dans les chapitres 📘 Conteneuriser (manuellement) un logiciel en image de conteneur et 📘 Créer et manipuler des conteneurs.
D’autres points techniques vous sont expliqués ci-après.
2.1. Usage discipliné des ports disponibles
Comment évoqué précédemment, les seuls ports réseaux que nous avons le droit d’utiliser sur le serveur de déploiement sont les ports 8080 à 9089. Étant donné que ce serveur sera partagé par tous les étudiants, il est nécessaire de faire preuve d’une certaine discipline pour partager ces ports entre tous les usagers du serveur.
Une liste intitulée "Attribution par étudiant⋅e des ports réseaux du serveur de déploiement" est disponible sur Madoc, et attribue à chaque étudiant⋅e un intervalle de ports. Il vous est demandé de ne pas faire de publications de ports avec Podman en dehors de votre intervalle.
| Il ne sera pas possible de facilement vérifier que chaque étudiant⋅e respecte cette règle, c’est pourquoi nous comptons sur votre rigueur et votre courtoisie pour ne pas aller utiliser des ports réservés à vos camarades ! |
2.2. Créer et éditer un fichier
Lors de votre travail avec Podman sur le serveur de déploiement, il peut arriver que vous ayez besoin de créer ou modifier un fichier dans cet environnement, par exemple un fichier Containerfile ou compose.yml.
Or, comme évoqué précédemment, cet environnement ne possède pas d’interface graphique, et on ne peut y agir que par le terminal.
Il est possible à la place d’utiliser un éditeur de texte sans interface graphique, en utilisant un utilitaire console comme nano.
Pour créer ou ouvrir un fichier avec nano, depuis un terminal :
$ nano monfichier
On arrive alors dans un éditeur de texte basique où tout doit se faire au clavier. On promène un indicateur de position dans le texte à l’aide des flèches directionnelles, et on écrit là on l’indicateur se situe.
nanoOn peut voir en bas de l’écran un ensemble de raccourcis écrits sous la forme ^W ou ^X.
Le symbole ^ signifie qu’il faut utiliser la touche clavier CTRL pour réaliser le raccourci.
Par exemple, ^X signifie qu’il faut faire CTRL + x pour exécuter l’action correspondante.
Les raccourcis les plus importants sont les suivants :
-
CTRL +
o: enregistrer le fichier (faire Entrée pour valider le nom du fichier) -
CTRL +
w: rechercher dans le fichier -
CTRL +
k: supprime la ligne actuelle -
CTRL +
x: quitte l’éditeur
Pour copier et coller du texte sélectionné dans un terminal, la bonne manipulation est CTRL+SHIFT+c (pour copier), et CTRL+SHIFT+v (pour coller).
|
2.3. Transférer des fichiers
Comme évoqué précédemment, le serveur de déploiement n’a pas directement accès à votre répertoire étudiant habituel. Il peut cependant être utile de copier des fichiers depuis votre répertoire étudiant vers le serveur, ou inversement depuis le serveur vers votre répertoire étudiant.
Voyons deux méthodes très différentes pour faire de tels transferts de fichiers.
2.3.1. Via scp
L’utilitaire scp est capable de copier des fichiers d’une machine à une autre à l’aide du protocole SSH.
Pour des raisons de sécurité, il est conseillé de ne pas utiliser une version de scp antérieure à la version 9.0 de OpenSSH.
Si ce n’est pas possible, il faut privilégier l’utilitaire rsync en lieu et place.
|
Pour copier un fichier vers le serveur de déploiement depuis un poste Linux :
$ scp monfichier podman:~
Pour rappel, le symbole ~ est un raccourci qui signifie répertoire utilisateur, et que dans cette commande cela fait référence à votre répertoire utilisateur sur le serveur podman.
|
Si on souhaite copier le fichier dans un sous-répertoire appelé mon_repertoire_distant, on peut faire :
$ scp monfichier podman:~/mon_repertoire_distant
Pour copier un répertoire vers le serveur de déploiement depuis un poste Linux :
$ scp -r mon_repertoire podman:~
On notera l’usage de l’option -r qui signifie "copie récursive" et qui est nécessaire pour copier un répertoire.
Pour télécharger un fichier situé sur le serveur de déploiement, vers le répertoire actuel d’un poste Linux :
$ scp podman:~/monfichier .
Pour rappel, le point (.) est un raccourci qui signifie "répertoire courant".
|
2.4. Gérer ses données et son espace disque sur le serveur
Comme expliqué précédemment, chaque utilisateur du serveur de déploiement possède son propre espace de stockage sur ce dernier. Cet espace peut être utilisé pour effectuer des déploiements de logiciels, mais est également utilisé par Podman pour stocker toutes les données dont il a besoin.
En particulier, Podman utilise votre espace sur le serveur afin de stocker :
-
toutes les images de conteneurs téléchargées ou créées,
-
tous les conteneurs créés.
L’espace utilisé peut donc monter très très vite ! Pour ne pas dépasser votre quota, il vous est recommandé, à la fin de chaque séance de TP ou de chaque période de travail, de faire les commandes suivantes :
Première chose simple faire, vous pouvez stopper tous vos conteneurs :
$ podman container stop --all
Puis vous pouvez supprimer tous vos conteneurs stoppés :
$ podman container prune
Ainsi que vos réseaux virtuels désormais non utilisés :
$ podman network prune
Enfin, vous pouvez supprimer toutes les images de conteneurs que vous avez téléchargées lors de vos créations de conteneurs :
$ podman image prune --all
|
Il est également possible de remettre entièrement les données de Podman (images, conteneurs, réseaux, etc.) à zéro à l’aide de la commande suivante : [sur l’environnement de déploiement distant]
|
Vous avez créé un certain nombre de répertoires et de fichiers pour vos conteneurs, et ces derniers ont également créé de nouveaux fichiers au sein de des répertoires que vous leur avez fourni par montage.
Cependant, si vous souhaitez supprimer toutes les données créées par vos conteneurs, par exemple à l’aide de la commande rm -rf <mon répertoire>, vous ferez parfois face à des erreurs de permission !
Pour bien comprendre ce qu’il se passe, et pour résoudre ce problème, se référer à la section correspondante du chapitre sur l’exécution de conteneurs.