This repository has been archived on 2024-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
adlin/tutorial/ansible/what.md

10 KiB

\newpage

Démarrer sur le SI du jour

Présentation du système d'information

Le système d'information que vous allez avoir à gérer aujourd'hui est très restreint, car il ne se compose que d'une seule machine !

Cette semaine, nous allons installer et configurer de nombreux services sur cette machine.

L'image ISO que vous avez récupérée met à votre disposition un système Debian minimaliste. Cette image s'occupe de faire le nécessaire pour démarrer le système, sans que vous ayez à réaliser une installation complète, qui est plus longue qu'intéressante. Néanmoins, si vous avez des interrogations au sujet de la manière dont une installation se fait, ou du fonctionnement du bootloader, n'hésitez pas à poser vos questions !

Accéder à la machine virtuelle

Une fois la machine virtuelle démarrée, vous pouvez vous y connecter en root avec le mot de passe adlin2019.

Vous pouvez également démarrer en mode single user, mais comme votre disque n'est sans doute pas encore utilisable à ce stade, vous ne pourrez pas changer le mot de passe root. Vous pourrez néanmoins effectuer les étapes de configuration du disque décrites plus loin, sous ce mode, puis redémarrer.

Lorsque vous avez accès à la ligne de commande du bootloader, vous pouvez généralement ajouter l'option init=/bin/sh à la ligne de commande du noyau, afin de lancer un shell au lieu du système d'init habituel.

Configuration du système de fichiers

Système initial

L'image ISO sur laquelle votre machine virtuelle démarre va tenter de monter un OverlayFS avec la première partition du premier disque qu'il rencontre.

Vous ne pourrez pas apporter de modifications à votre système de fichiers tant que vous n'aurez pas démarré dans le mode "disque dur configuré".

Table des partitions

Si votre disque a fraîchement été créé, celui-ci ne contient encore aucune partition, il ne contient d'ailleurs pas même de table de partitions !

Pour éditer (ou créer ...) la table de partitions d'un disque, vous pouvez utiliser les utilitaires fdisk, cfdisk, sfdisk, parted, gdisk. Chacun de ses programmes prend en argument le disque à modifier :

    cfdisk /dev/sda

Le TP ne se concentrant pas sur la phase de démarrage, vous pouvez ignorer les choix de type de tables, de partitions, leurs drapeaux, les étiquettes, etc.

Assurez-vous de créer au moins deux partitions : la première occupera la majeure partie de votre disque, tandis que la deuxième peut se limiter à une centaine de MB, pour l'exercice.

Assurez-vous de bien lire tous les messages d'avertissements ! Il est important que vous comprenniez ce que vous faites à ce stade, car cela peut entraîner des pertes de données.

Système de fichiers

Les partitions sont maintenant créées, mais il n'est pas encore possible de les utiliser telles-quelles. Afin de pouvoir les utiliser, il est d'abord nécessaire de les formater. Linux supporte une grande variété de systèmes de fichiers, chacun ayant des caractéristiques et des usages particuliers. Le système de fichiers « généraliste » est l'Extended File System (ext),

Durant la phase de formatage, les structures (telles que les tableaux d'inœuds, le journal des transactions, etc. selon les caractéristiques du système de fichiers) seront inscrites sur le disque. Un certain nombre d'en-têtes référençant des pointeurs vers ces structures et autres particularités éventuelles de la partition seront également inscrits. Il n'est à ce stade pas nécessaire de mettre à zéro chaque secteur du disque ; il faut seulement s'assurer d'initialiser les structures qui seront utilisées pour ne pas récupérer de données aléatoires imprévisibles (notamment, le tableau d'inœuds doit se terminer par une entrée NULL, qui sera interprété comme une fin de liste par le noyau).

Utilisez les utilitaires mkfs.X (où X est à remplacer par le système de fichiers que vous avez choisi) pour formater vos partitions.

Partition d'échange

La swap (partition d'échange en français) est un espace du disque que l'on dédie pour étendre la mémoire vive du système. En cas de débordement, le système pourra choisir de placer sur le disque des pages dont il n'a pas besoin sur le moment. Les pages placées dans l'espace d'échange ne seront à nouveau utilisables que lorsque le noyau les aura replacées dans la RAM.

Encore de nos jours, où nos machines ont souvent beaucoup plus de RAM que ce dont le système aura jamais besoin, il reste important d'avoir une partition d'échange, à hauteur de 20 % de la quantité de mémoire disponible1.

Pour formater une partition d'échange, on utilise l'utilitaire mkswap.

Montage automatique des partitions

Montage des partitions annexes

Automatique ne veut pas dire magique ! Pour chaque partition dont on dispose, il va falloir indiquer dans le fichier /etc/fstab l'emplacement dans l'arborescence où attacher la partition ainsi que quelques autres caractéristiques.

# <fs>      <mountpoint>    <type>  <opts>          <dump/pass>
/dev/sda1   /               ext4    defaults        0 1
/dev/sda2   none            swap    swap            0 0
none        /tmp            tmpfs   defaults,nosuid,nodev,noexec    0 0

Notons que le montage des partitions est effectué par le système d'initialisation (un simple appel à la commande mount -a ou équivalent). À aucun moment le noyau ne va lire le contenu de ce fichier.

Voir aussi : fstab(5)

Montage de la racine

Nous pouvons constater que nous avons indiqué dans ce fichier l'emplacement de notre partition racine. Mais ... le système d'init se trouvant sur cette partition racine, comment peut-il monter lui-même la partition sur laquelle se trouve son programme ?!

Parmi les dernières étapes de démarrage du noyau, juste avant le lancement du programme se trouvant à l'emplacement /sbin/init (ou surchargé par l'option init=), le noyau va monter la partition qui lui a été précisée dans l'option root=.

Vous l'aurez donc compris, afin de bénéficier d'un système utilisable, vous allez devoir redémarrer et ajouter l'option root=/dev/sda1 à la ligne de commande de votre noyau (ou choisir la ligne « avec disque configuré » !).

Persistance de la configuration réseau

Maintenant que notre système de fichiers n'est plus en lecture seul, vous allez pouvoir y apporter des modifications. Par exemple pour installer un client DHCP, afin de vous connecter au réseau facilement !

Deux solutions s'offrent à vous pour rendre persistant votre configuration réseau :

  • éditer le fichier /etc/network/interfaces, en suivant les directives de la documentation Debian ;
  • éditer le fichier /etc/systemd/network/50-dhcp.network, en suivant les directives de systemd-networkd.

À ce stade, vous devriez pouvoir redémarrer votre machine virtuelle et constater la présence d'une IP dans l'en-tête de bienvenue.

Se mettre à l'aise

Un serveur SSH est déjà installé et configuré pour vous permettre d'avoir une interface plus agréable que celle de votre hyperviseur.

Attention : si votre machine virtuelle est directement connectée au réseau local (sans passer par un NAT), n'oubliez pas de modifier le mot de passe root pour éviter que n'importe qui sur le réseau local (et ayant accès à ce TP), ne rentre sur votre machine.

Création d'un utilisateur

Une règle primordiale dans l'administration, c'est de ne jamais trop travailler utiliser le compte root directement ! quelque soit le sytème d'exploitation.

Sur chaque machine, on crée donc autant de comptes utilisateurs, qu'il y aura de personnes susceptibles de s'y connecter pour l'administrer2.

Utilisez adduser(8) pour vous créer votre propre compte, et au minimum passwd(1) pour lui définir un mot de passe.

C'est bon, vous pouvez maintenant commencer à utiliser le client SSH de votre choix pour administrer votre machine virtuelle !

su -- Switch User

Mais comment faire des opérations d'administration, avec un simple compte utilisateur ?

La commande su - permet de changer devenir root, moyennant la connaissance du mot de passe du compte. Notez l'option - passée à la commande, cela permet de réinitialiser l'environnement comme si l'on venait de se connecter en tant que l'utilisateur cible.

Afin de simplifier les opérations d'administration, une suite de commandes fournies par le paquet sudo va devenir votre couteau suisse d'administrateur. Utilisez :

  • sudo : pour exécuter n'importe quelle commande, avec les privilèges administrateur ;
  • sudoedit : pour éditer un fichier avec les droits administrateurs.

Après avoir installé le paquet, vous devrez ajouter les utilisateurs autorisés à se servir de sudo dans le groupe sudo ou wheel (en fonction des distributions). Vous pouvez également définir des conditions plus précise en éditant le fichier /etc/sudoers (utilisez impérativement visudo(1) pour éditer ce fichier).

Super astuce ! votre terminal rit encore de vous, affichant Permission Denied car vous avez oublié de préfixer votre commande par sudo ? essayez :

  sudo !!

Top confort dans son coquillage

Un shell brut de configuration, c'est souvent source d'erreur ! N'hésitez pas à recopier votre configuration et à changer votre shell (chsh(1)) pour vous trouver dans un environnement plus amical !

On évitera toute configuration sur le compte root, étant donné qu'il est susceptible d'être utilisé en dernier recours lorsque plus rien ne fonctionne, une configuration basique aura plus de chance de résister. De toute manière, vous n'utiliserez jamais ce compte !


  1. https://www.redhat.com/en/blog/do-we-really-need-swap-modern-systems ↩︎

  2. non seulement cela évite d'exécuter n'importe quel script ou programme avec des privilèges lorsque ce n'est pas nécessaire, mais cela permet également de pouvoir retracer, via les journaux, qui a réalisé quelles opérations. ↩︎