💻 TP : Découverte de l’infrastructure et des outils
1. Présentation et objectifs
Les travaux pratiques de ce cours peuvent avoir l’air un peu intimidants : beaucoup d’outils différents, beaucoup d’actions à réaliser dans un terminal Linux, des projets assez complexes à comprendre et à manipuler, etc.
Ce premier TP vise à vous rendre opérationnels quant à l’usage des outils de base, ainsi que l’usage des services fournis par l’infrastructure à notre disposition.
Les objectifs de ce TP sont donc de :
-
générer votre première clé SSH personnelle,
-
vous familiariser avec l’interaction avec le serveur de déploiement, avec :
-
une connexion à l’aide du protocole SSH,
-
l’envoi de fichiers avec
scp, -
modifier des fichiers texte à distance.
-
-
essayer quelques déploiements "à la main" dans un environnement limité (et sans conteneurisation), et constater certaines difficultés
Non seulement tout cela vous sera utile pour être à l’aise pour les TPs suivants, mais cela vous permettra également de prendre conscience des tâches manuelles habituellement nécessaires pour manipuler un serveur distant.
| Avant de vous lancer sur le TP, il est fortement recommandé de lire à minima le début de la 🗒️ Notice : infrastructure et outils, et d’ouvrir dans un onglet l’autre notice (🗒️ Notice : environnement de déploiement) qui servira tout au long du TP. Gardez également ouvert le chapitre 📘 Déploiement de logiciel |
2. Usages principaux du serveur de déploiement
Une part importante des TPs nécessite l’usage du serveur de déploiement mis à votre disposition. Apprenons à manipuler manuellement ce serveur.
2.1. Connexion SSH par mot de passe
-
Ouvrez un terminal, puis suivez les instructions pour vous connecter par SSH à l’aide d’un mot de passe dans la 🗒️ Notice : environnement de déploiement.
-
Si tout va bien, vous êtes désormais connecté au serveur ! Par défaut vous êtes dans votre répertoire utilisateur spécifique à ce serveur. Pour voir l’emplacement de ce répertoire sur le serveur, faites
pwd. Ce répertoire est initialement vide, et ne contient pas les données de votre répertoire étudiant habituel. Pour le constater, faites la commandels, et constatez que vous n’avez aucun retour (car il n’y a aucun fichier). -
Créez un nouveau répertoire appelé
tp-decouverte-serveurà l’aide de la commande :[sur l’environnement de déploiement distant]$ mkdir tp-decouverte-serveur -
Rendez vous dans ce répertoire à l’aide de la commande :
[sur l’environnement de déploiement distant]$ cd tp-decouverte-serveur -
Suivez les instructions pour créer et éditer un fichier depuis le terminal toujours dans la 🗒️ Notice : environnement de déploiement. Préparez un fichier avec pour nom
hello.txt, et avec pour contenu"Hello world!". Une fois l’édition terminée, utilisez la commandecat hello.txtpour vérifier le contenu du fichier. -
Enfin, fermez votre connexion SSH à l’aide de la commande
exit.
2.2. Générer sa clé SSH personnelle
-
Ouvrez un terminal, puis suivez les instructions pour générer votre clé SSH personnelle dans la 🗒️ Notice : infrastructure et outils.
Si vous faites ce TP en binôme, vous devez faire cette étape pour chaque membre du binôme, en se connectant à chaque fois sur la session du membre concerné ! -
Pour vérifier que vous avez réussi cette étape, ouvrez un terminal et faites la commande :
[sur votre poste de travail local]$ ls ~/.sshSi vous voyez les fichiers
id_ecdsa.pubet.ssh/id_ecdsa, c’est que tout est OK, et vous pouvez passer à la suite.
2.3. Connexion SSH avec clé SSH
Apprenez à simplifier vos connexions SSH en suivant les instructions pour vous connecter à l’aide de votre clé SSH personnelle dans la 🗒️ Notice : environnement de déploiement.
2.4. Envoi de fichiers vers le serveur
Nous avons vu comment créer des fichiers directement depuis le serveur, cependant l’édition depuis le terminal n’est pas le plus pratique. Voyons désormais comment préparer des fichiers sur votre poste Linux, avant de les transférer par le réseau jusqu’au serveur.
-
Sur votre poste Linux, préparez un nouveau répertoire appelé
tp-decouverte-envoi. -
Dans ce répertoire, préparez :
-
un premier fichier appelé
envoi1.txtavec pour contenu"Ceci est mon premier envoi" -
un sous-répertoire appelé
envoi2et contenant :-
un fichier appelé
envoi2_a.txtavec pour texte"Ceci est le premier fichier de mon second envoi", -
un fichier appelé
envoi2_b.txtavec pour texte"Ceci est le second fichier de mon second envoi".
-
-
-
Ouvrez un terminal, puis suivez les instructions pour envoyer un fichier toujours dans la 🗒️ Notice : environnement de déploiement. Vous devez transférer le fichier
envoi1.txt, et le déposer dans le répertoiretp-decouverte-serveursitué sur le serveur de déploiement. -
Ouvrez un second terminal, et connectez vous par SSH sur le serveur, puis allez vérifier que votre fichier est bien présent dans le répertoire
tp-decouverte-serveur. Utilisez la commandecatpour vérifier le contenu du fichier. -
Dans le premier terminal, faites un nouveau transfert afin de copier le répertoire
envoi2au sein du répertoiretp-decouverte-serveursitué sur le serveur de déploiement. -
Dans le second terminal, allez vérifier que l’envoi du répertoire a bien fonctionné. Utilisez la commande
catpour vérifier le contenu des deux fichiers qui étaient dans le répertoire envoyé.
3. Comprendre un peu l’environnement de déploiement
3.1. Carte d’identité de l’environnement
Il est utile de se renseigner sur l’environnement sur lequel on intervient, notamment connaître son système d’exploitation.
Une première façon de connaître le système d’exploitation d’un environnement Linux est de lire contenu du fichier standard /etc/os-release, par exemple avec la commande suivante :
$ cat /etc/os-release
-
Exécutez cette commande sur l’environnement de déploiement étudié, et déterminez quel est le système d’exploitation et sa version en lisant les clés
NAMEetVERSION.
Une seconde façon de connaître le système d’exploitation, ainsi que d’autres informations utiles, est d’exécuter l’outil hostnamectl, souvent (mais pas toujours) disponible dans un environnement Linux :
$ hostnamectl
-
Exécutez cette commande sur l’environnement de déploiement étudié, et déterminez quel est le système d’exploitation et sa version en lisant la clé
Operating system. Observez également les autres clés disponibles, par exemple la cléChassisqui décrit le type de machine (laptoppour un ordinateur portable,vmpour une machine virtuelle, etc).
3.2. Variables d’environnement
Dans le chapitre 📕 Logiciel et exécution, nous avons rappelé le méchanisme de variable d’environnement, qui permet de poser des variables dans un environnement notamment en vue de configurer un logiciel à déployer.
Pour jouer un peu avec ce méchanisme, dans l’environnement de déploiement :
-
Exécutez la commande
printenvet constatez qu’un ensemble important de variables sont définies par défaut dans l’environnement. -
Utilisez la commande
exportpour créer une nouvelle variable d’environnementMAVARIABLEavec la valeur"mavaleur", puis constatez que votre variable est bien affichée dansprintenv. -
Utilisez la commande
echopour afficher le contenu deMAVARIABLE, en n’oubliant pas de préfixer le nom de la variable avec$.
3.3. Droits d’accès
Dans le chapitre 📕 Logiciel et exécution, nous avons rappelé le méchanisme de droit d’accès, qui permet de limiter dans un environnement quelles actions peuvent être réalisées par des utilisateurs et/ou des processus logiciels.
Pour observer grossièrement certains droits d’accès en place sur dans l’environnement de déploiement :
-
Exécutez la commande
touch ~/fichier_temporairepour créer un nouveau fichier appeléfichier_temporairedans votre répertoire utilisateur (dénoté par~). Puis, utilisez la commandelspour vérifier que ce fichier a bien été créé. Constatez que tout s’est bien passé (le fichier a été créé), puis supprimez le fichier avecrm. Cela confirme que vous avez tous les droits dans votre répertoire utilisateur. -
Exécutez la commande
touch /etc/fichier_temporairepour créer un nouveau fichier appeléfichier_temporairedans le répertoire système/etc. Constatez que cette action n’est pas autorisée, car votre compte de possède pas les droits suffisants. -
Exécutez la commande
apt install gitpour installer un nouveau logiciel (à savoirgit) dans les logiciels système de l’environnement de déploiement. Constatez à nouveau que cette commande échoue : en effet,aptcherche à installer le logiciel au sein des données sytème (répertoire/usr/binnotamment), or votre compte utilisateur ne possède pas le droit d’écrire dans les données systèmes.
En résumé, vos droits sur l’environnement de déploiement sont très limités !
En particulier, sans les droits root, il n’est pas facilement possible d’installer des logiciels ou des dépendances logicielles…
4. Quelques petits déploiements (sans conteneurs)
Dans cette dernière partie, tentons de déployer des petits programmes sur l’environnement de déploiement.
Les programmes peuvent être trouvés en visitant cette page web.
Dans cette partie on ne s’intéresse qu’aux quatre premiers programmes (on ne traitera pas 5_economic_dispatch).
| Ici le terme "déploiement" est légèrement exagéré, car il sera question de très petits logiciels jouets qui ne rendent peu ou pas de services concrets, et qui ne fonctionnent pas en service continu. |
4.1. replace_string
Sur la page web avec les différents programmes, rendez-vous dans le répertoire 1_replace_string.
-
Lisez bien le README qui vous est présenté, et qui affiche la documentation technique et utilisateur de l’outil.
-
Téléchargez
replace_string.pysur votre machine de TP, puis vous transférez ce fichier dans l’environnement de déploiement. -
Testez l’outil sur l’environnement de déploiement :
-
Créez un nouveau fichier de votre choix, et mettez-y le contenu exemple proposé dans le README
-
Exécutez l’outil pour remplacer le mot
bottlepar le mot de votre choix.
-
Tout fonctionne comme prévu ? Si oui, répondez aux questions suivantes :
-
Quelle dépendance est requise pour faire fonctionner
1_replace_string? -
Avez-vous vérifié que cette dépendance était présente dans l’environnement de déploiement avant de déployer ?
-
Comment vérifier que cette dépendance est bien présente dans l’environnement de déploiement ?
La plupart des logiciels exécutables dans un terminal savent répondre à l’option --version, qui permet de juste vérifier que le logiciel existe est quelle version est installée.
|
4.2. compress_file
Sur la page web avec les différents programmes, rendez-vous dans le répertoire 2_compress_file.
Suivez le même principe que pour le programme précédent (replace_string) : lisez bien la documentation, puis déployez le logiciel sur l’environnement de déploiement, et enfin tentez de l’exécuter sur un exemple que vous aurez préparé.
-
Que se passe-t-il à l’exécution ?
-
Est-ce que la dépendance requise est bien présente comme souhaité ?
-
Peut-on installer la dépendance requise ? Si non, pourquoi ?
La fonction zstd.compress a été ajoutée uniquement dans la version Python 3.14, et n’est pas disponible avec Python 3.13.
|
4.3. print_colored_string
Sur la page web avec les différents programmes, rendez-vous dans le répertoire 3_print_colored_string.
Suivez le même principe que pour les programmes précédents : lisez bien la documentation, puis déployez le logiciel sur l’environnement de déploiement, et enfin tentez de l’exécuter sur un exemple que vous aurez préparé.
-
Que se passe-t-il à l’exécution ?
-
Est-ce que les dépendances requises sont bien présentes comme souhaité ?
-
Peut-on installer les dépendances requises ? Si non, pourquoi ?
4.4. TicTacToe
Sur la page web avec les différents programmes, rendez-vous dans le répertoire 4_tictactoe.
Suivez le même principe que pour les programmes précédents : lisez bien la documentation, puis déployez le logiciel sur l’environnement de déploiement, et enfin tentez de l’exécuter sur un exemple que vous aurez préparé.
-
Que se passe-t-il à l’exécution ?
-
Est-ce que la dépendance requise est bien présente comme souhaité ?
-
Peut-on installer la dépendances requise ? Si non, pourquoi ?
4.5. Synthèse
Avec ces petits déploiements, vous avez pu commencer à découvrir les besoins que peut avoir un logiciel lorsqu’il faut le déployer, quelques exemples de problèmes de dépendances (mauvaise version, bibliothèque manquante, logiciel manquant, etc.) ainsi que les caractéristiques de l’environnement de déploiement (droits limités, logiciels pré-installés limités).
Le prochain TP vous montrera comment se libérer de ces contraintes en créant vos propres environnements sous la forme d’un conteneurs !