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
|
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
|
Configuration du système de fichiers
|
||||||
@ -20,35 +41,208 @@ Configuration du système de fichiers
|
|||||||
|
|
||||||
### Système initial
|
### 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
|
Utilisez les utilitaires `mkfs.X` (où `X` est à remplacer par le système de
|
||||||
|
fichiers que vous avez choisi) pour formater vos partitions.
|
||||||
Édition du `/etc/fstab`.
|
|
||||||
|
|
||||||
+ `/home`
|
|
||||||
+ `/srv`
|
|
||||||
+ `/var/backups`
|
|
||||||
|
|
||||||
|
|
||||||
### 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