tuto-ansible: what done
This commit is contained in:
parent
9631e12798
commit
98593ea3cb
@ -6,13 +6,34 @@ Démarrer sur le SI du jour
|
||||
Présentation du système d'information
|
||||
-------------------------------------
|
||||
|
||||
Accéder à la macine virtuelle
|
||||
-----------------------------
|
||||
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 !
|
||||
|
||||
Persistance de la configuration réseau
|
||||
--------------------------------------
|
||||
Cette semaine, nous allons installer et configurer de nombreux services sur
|
||||
cette machine.
|
||||
|
||||
Édition du `/etc/network/interfaces`
|
||||
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
|
||||
@ -20,35 +41,208 @@ Configuration du système de fichiers
|
||||
|
||||
### Système initial
|
||||
|
||||
L'ISO monte un OverlayFS avec la première partition du disque qu'il rencontre.
|
||||
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é".
|
||||
|
||||
|
||||
#### UnionFS quésako?
|
||||
### 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.
|
||||
|
||||
|
||||
### Extension du système de fichiers
|
||||
### Système de fichiers
|
||||
|
||||
#### Création d'un volume LVM chiffré et résilient (bonus)
|
||||
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`),
|
||||
|
||||
#### Création d'un volume LVM basique
|
||||
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).
|
||||
|
||||
#### Création et montage des systèmes de fichiers
|
||||
|
||||
Édition du `/etc/fstab`.
|
||||
|
||||
+ `/home`
|
||||
+ `/srv`
|
||||
+ `/var/backups`
|
||||
Utilisez les utilitaires `mkfs.X` (où `X` est à remplacer par le système de
|
||||
fichiers que vous avez choisi) pour formater vos partitions.
|
||||
|
||||
|
||||
### Se mettre à l'aise
|
||||
### Partition d'échange
|
||||
|
||||
#### Création d'un utilisateur
|
||||
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.
|
||||
|
||||
Pour administrer la machine, c'est mieux de créer un utilisateur + sudo
|
||||
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
|
||||
disponible[^currentswap].
|
||||
|
||||
#### Installer un shell et sa recopier sa config
|
||||
[^currentswap]: <https://www.redhat.com/en/blog/do-we-really-need-swap-modern-systems>
|
||||
|
||||
`chsh`
|
||||
Pour formater une partition d'échange, on utilise l'utilitaire `mkswap`.
|
||||
|
||||
#### Rappels sur l'utilisation du shell
|
||||
|
||||
### 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](https://wiki.debian.org/NetworkConfiguration) ;
|
||||
- éditer le fichier `/etc/systemd/network/50-dhcp.network`, en suivant les
|
||||
directives de
|
||||
[`systemd-networkd`](https://www.freedesktop.org/software/systemd/man/systemd.network.html).
|
||||
|
||||
À 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'administrer[^whysudo].
|
||||
|
||||
[^whysudo]: 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.
|
||||
|
||||
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 !
|
||||
|
Reference in New Issue
Block a user