work on tuto2
This commit is contained in:
parent
2788600d4f
commit
58e541d6ad
4 changed files with 114 additions and 107 deletions
|
@ -12,7 +12,7 @@ Comme tout bon ~~paresseux~~ sys. admin qui se respecte, sans plus attendre,
|
||||||
vous allez vouloir automatiser toutes ces actions rébarbatives. Comme de très
|
vous allez vouloir automatiser toutes ces actions rébarbatives. Comme de très
|
||||||
nombreuses personnes sont passées par là avant vous, il existe un grand nombre
|
nombreuses personnes sont passées par là avant vous, il existe un grand nombre
|
||||||
de solutions pour gérer les configurations d'un parc de machines. Parmi les
|
de solutions pour gérer les configurations d'un parc de machines. Parmi les
|
||||||
plus connues, citons : [Puppet](https://puppet.com/),
|
plus connues, citons : [Puppet](https://puppet.com/),
|
||||||
[Chef](http://www.chef.io/), [SaltStack](https://saltstack.com/) ou encore
|
[Chef](http://www.chef.io/), [SaltStack](https://saltstack.com/) ou encore
|
||||||
[Ansible](https://www.ansible.com/).
|
[Ansible](https://www.ansible.com/).
|
||||||
|
|
||||||
|
@ -23,17 +23,17 @@ Introduction à Ansible
|
||||||
Ansible est une solution de gestion de configuration. Basé sur
|
Ansible est une solution de gestion de configuration. Basé sur
|
||||||
[Python](https://www.python.org/) et
|
[Python](https://www.python.org/) et
|
||||||
[YAML](http://www.yaml.org/spec/1.2/spec.html), sa principale particularité est
|
[YAML](http://www.yaml.org/spec/1.2/spec.html), sa principale particularité est
|
||||||
de ne pas nécessité de daemon sur les machines qu'il va gérer : tout se fait
|
de ne pas nécessité de daemon sur les machines qu'il va gérer : tout se fait
|
||||||
exclusivement via SSH, à partir de la machine d'un administrateur, possédant
|
exclusivement via SSH, à partir de la machine d'un administrateur, possédant
|
||||||
Ansible.
|
Ansible.
|
||||||
|
|
||||||
Son installation est très simple, car les dépendances sont minimes et l'outil
|
Son installation est très simple, car les dépendances sont minimes et l'outil
|
||||||
n'a pas besoin de base de données pour fonctionner : tout va se faire à partir
|
n'a pas besoin de base de données pour fonctionner : tout va se faire à partir
|
||||||
d'une arborescence de fichiers, qui sera gérée par Git.
|
d'une arborescence de fichiers, qui sera gérée par Git.
|
||||||
|
|
||||||
Commencez par installer Ansible, sur une machine distincte de la machine
|
Commencez par installer Ansible, sur une machine distincte de la machine
|
||||||
virtuelle démarrée : la machine hôte sera parfaitement adaptée à cette tâche,
|
virtuelle démarrée : la machine hôte sera parfaitement adaptée à cette tâche,
|
||||||
d'autant plus que l'installation de la plate-forme est propre et légère : vous
|
d'autant plus que l'installation de la plate-forme est propre et légère : vous
|
||||||
ne risquez pas de vous retrouver avec une usine à gaz impossible à retirer.
|
ne risquez pas de vous retrouver avec une usine à gaz impossible à retirer.
|
||||||
|
|
||||||
[Consultez la procédure d'installation pour votre distribution ici](http://docs.ansible.com/ansible/latest/intro_installation.html).
|
[Consultez la procédure d'installation pour votre distribution ici](http://docs.ansible.com/ansible/latest/intro_installation.html).
|
||||||
|
@ -63,7 +63,7 @@ chose à faire consiste à les inventorier.
|
||||||
|
|
||||||
Commençons par créer un répertoire, qui contiendra l'ensemble de nos
|
Commençons par créer un répertoire, qui contiendra l'ensemble de nos
|
||||||
configurations à destination d'Ansible. Dans ce répertoire, créons un fichier
|
configurations à destination d'Ansible. Dans ce répertoire, créons un fichier
|
||||||
d'inventaires `hosts`, contenant l'IP de notre machine :
|
d'inventaires `hosts`, contenant l'IP de notre machine :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -83,7 +83,7 @@ donner des caractéristiques spécifiques à vos machines.
|
||||||
|
|
||||||
### `ping`
|
### `ping`
|
||||||
|
|
||||||
Lancez ensuite la commande suivante :
|
Lancez ensuite la commande suivante :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
|
@ -107,12 +107,12 @@ SSH sur les machines, pour éviter d'avoir à taper le mot de passe à chaque
|
||||||
test.
|
test.
|
||||||
|
|
||||||
Si vous avez bien suivi jusqu'ici, vous savez qu'il ne faut pas utiliser le
|
Si vous avez bien suivi jusqu'ici, vous savez qu'il ne faut pas utiliser le
|
||||||
compte `root` directement ! Pas d'inquiétude, tout est prévu dans Ansible :
|
compte `root` directement ! Pas d'inquiétude, tout est prévu dans Ansible :
|
||||||
retirer l'option `--user root` si votre nom d'utilisateur local est identique
|
retirer l'option `--user root` si votre nom d'utilisateur local est identique
|
||||||
que celui dans la machine virtuelle, ou adaptez l'option en conséquence.
|
que celui dans la machine virtuelle, ou adaptez l'option en conséquence.
|
||||||
|
|
||||||
Et ajoutez les options `--become` et `--ask-become-pass` (utilisez `--sudo` et
|
Et ajoutez les options `--become` et `--ask-become-pass` (utilisez `--sudo` et
|
||||||
`--ask-sudo-pass` pour les vieilles versions) :
|
`--ask-sudo-pass` pour les vieilles versions) :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -123,9 +123,9 @@ ansible --inventory-file hosts all -m ping -u bruce --become --ask-become-pass
|
||||||
|
|
||||||
### Les modules
|
### Les modules
|
||||||
|
|
||||||
Les modules Ansible ont généralement deux missions distinctes :
|
Les modules Ansible ont généralement deux missions distinctes :
|
||||||
|
|
||||||
- récupérer des informations en allant les extraire sur chaque machine ;
|
- récupérer des informations en allant les extraire sur chaque machine ;
|
||||||
- pousser des nouvelles informations pour atteindre un état précis.
|
- pousser des nouvelles informations pour atteindre un état précis.
|
||||||
|
|
||||||
Lorsque les informations récupérées montrent que l'état est déjà atteint,
|
Lorsque les informations récupérées montrent que l'état est déjà atteint,
|
||||||
|
@ -133,7 +133,7 @@ aucune modification n'est faite sur la machine, on parle d'idempotence.
|
||||||
|
|
||||||
À noter cependant que lorsque l'on retire un état de notre recette, il est
|
À noter cependant que lorsque l'on retire un état de notre recette, il est
|
||||||
conservé tel quel sur la machine. Par exemple, si un utilisateur `toto` est
|
conservé tel quel sur la machine. Par exemple, si un utilisateur `toto` est
|
||||||
créé suite à l'application d'une recette décrivant l'utilisateur `toto` ; si
|
créé suite à l'application d'une recette décrivant l'utilisateur `toto` ; si
|
||||||
l'on supprime la description, l'utilisateur ne sera pas supprimé des machines
|
l'on supprime la description, l'utilisateur ne sera pas supprimé des machines
|
||||||
sur lequel la recette aura été appliquée. Pour qu'il soit supprimé, il faut
|
sur lequel la recette aura été appliquée. Pour qu'il soit supprimé, il faut
|
||||||
modifier la description pour signaler que cet utilisateur ne doit pas
|
modifier la description pour signaler que cet utilisateur ne doit pas
|
||||||
|
@ -144,7 +144,7 @@ trouvé, il sera donc supprimé.
|
||||||
### Collecte du mercredi
|
### Collecte du mercredi
|
||||||
|
|
||||||
Parmi les modules de base, le module `setup` permet de récupérer un grand
|
Parmi les modules de base, le module `setup` permet de récupérer un grand
|
||||||
nombre de caractéristiques de la machine distance, voyez plutôt :
|
nombre de caractéristiques de la machine distance, voyez plutôt :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -165,7 +165,7 @@ Ma première recette
|
||||||
Un livre de recettes (*playbook* dans le vocabulaire d'Ansible), regroupe les
|
Un livre de recettes (*playbook* dans le vocabulaire d'Ansible), regroupe les
|
||||||
descriptions des états que l'on souhaite obtenir sur un groupe de machines données.
|
descriptions des états que l'on souhaite obtenir sur un groupe de machines données.
|
||||||
|
|
||||||
Par exemple, voici à quoi pourrait ressembler un tel recueil :
|
Par exemple, voici à quoi pourrait ressembler un tel recueil :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -202,7 +202,7 @@ d'Ansible](http://docs.ansible.com/ansible/latest/playbooks.html).
|
||||||
### Exécution d'un *Playbook*
|
### Exécution d'un *Playbook*
|
||||||
|
|
||||||
Placer le contenu dans un fichier YAML, par exemple `playbook.yml`, non loin du
|
Placer le contenu dans un fichier YAML, par exemple `playbook.yml`, non loin du
|
||||||
fichier `hosts` créé à la section précédentes, puis lancez :
|
fichier `hosts` créé à la section précédentes, puis lancez :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -214,7 +214,7 @@ ansible-playbook -i hosts playbook.yml
|
||||||
### Coup de pouce
|
### Coup de pouce
|
||||||
|
|
||||||
Voici à quoi ressemblerait votre premier playbook créant l'utilisateur
|
Voici à quoi ressemblerait votre premier playbook créant l'utilisateur
|
||||||
`adeline` :
|
`adeline` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -252,7 +252,7 @@ si un changement à eu lieu. Par exemple, nous pourrions déclarer une tâche de
|
||||||
redémarrage du serveur web, seulement lorsque sa configuration est mise à
|
redémarrage du serveur web, seulement lorsque sa configuration est mise à
|
||||||
jour.
|
jour.
|
||||||
|
|
||||||
Pour se faire, il faut ajouter un élément `notify` à sa tâche :
|
Pour se faire, il faut ajouter un élément `notify` à sa tâche :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -263,7 +263,7 @@ Pour se faire, il faut ajouter un élément `notify` à sa tâche :
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Puis, au même niveau que les *tasks*, on déclare nos *handlers* :
|
Puis, au même niveau que les *tasks*, on déclare nos *handlers* :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -281,9 +281,9 @@ documentation](http://docs.ansible.com/ansible/latest/playbooks_intro.html#handl
|
||||||
pour davantage de détails et d'exemples.
|
pour davantage de détails et d'exemples.
|
||||||
|
|
||||||
La configuration de votre serveur SSH laisse à désirer. Corriger les problèmes
|
La configuration de votre serveur SSH laisse à désirer. Corriger les problèmes
|
||||||
énoncés par ces deux articles :
|
énoncés par ces deux articles :
|
||||||
|
|
||||||
- <https://ringyt.wordpress.com/2017/05/23/default-hardened-ssh-server-config/> ;
|
- <https://ringyt.wordpress.com/2017/05/23/default-hardened-ssh-server-config/> ;
|
||||||
- <https://stribika.github.io/2015/01/04/secure-secure-shell.html>.
|
- <https://stribika.github.io/2015/01/04/secure-secure-shell.html>.
|
||||||
|
|
||||||
Mettez en place un *handler* pour relancer votre serveur SSH en cas de
|
Mettez en place un *handler* pour relancer votre serveur SSH en cas de
|
||||||
|
@ -293,7 +293,7 @@ modification de sa configuration.
|
||||||
Les variables
|
Les variables
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Les variables peuvent provenir de très nombreux emplacements : définies
|
Les variables peuvent provenir de très nombreux emplacements : définies
|
||||||
spécifiquement pour l'hôte, chargées depuis des fichiers lié au groupe auquel
|
spécifiquement pour l'hôte, chargées depuis des fichiers lié au groupe auquel
|
||||||
appartient la machine, liées à la recette ou à la tâche en cours d'exécution,
|
appartient la machine, liées à la recette ou à la tâche en cours d'exécution,
|
||||||
récupérée par un module (comme le module `setup`).
|
récupérée par un module (comme le module `setup`).
|
||||||
|
@ -323,7 +323,7 @@ datacenter de rattachement, etc.
|
||||||
#### Dans un *playbook*
|
#### Dans un *playbook*
|
||||||
|
|
||||||
De la même manière que dans l'inventaire, il est possible de définir des
|
De la même manière que dans l'inventaire, il est possible de définir des
|
||||||
variables dans une recette :
|
variables dans une recette :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -333,7 +333,7 @@ variables dans une recette :
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Ces variables peuvent être placées dans un fichier, pour plus de lisibilité :
|
Ces variables peuvent être placées dans un fichier, pour plus de lisibilité :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -343,7 +343,7 @@ Ces variables peuvent être placées dans un fichier, pour plus de lisibilité :
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Le format correspond au sous arbre que l'on pourrait trouver sous `vars` :
|
Le format correspond au sous arbre que l'on pourrait trouver sous `vars` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -369,10 +369,8 @@ I'm running {{ ansible_system }} {{ ansible_os_family }} on {{ ansible_system_ve
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Ce format est relativement générique. Ainsi, pour accéder aux éléments d'une
|
Ce format est relativement générique. Ainsi, pour accéder aux éléments d'une
|
||||||
table de hash/dictionnaire, on utilise le caractère `.` ;
|
table de hash/dictionnaire, on utilise le caractère `.` ; les crochets `[x]`
|
||||||
|
sont utilisés principalement pour accéder aux éléments des tableaux :
|
||||||
Les crochets `[x]` sont utilisés principalement pour accéder aux éléments des
|
|
||||||
tableaux :
|
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
|
@ -380,7 +378,7 @@ My first nameserver is: {{ ansible_dns.nameservers[0] }}.
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
ou d'un dictionnaire lorsque la clef doit être récupérée d'une variable :
|
ou d'un dictionnaire lorsque la clef doit être récupérée d'une variable :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
|
@ -396,7 +394,7 @@ d'aplatir la liste retournée.
|
||||||
#### Dans les recettes
|
#### Dans les recettes
|
||||||
|
|
||||||
Au sein même de votre description YAML, vous pouvez utiliser la puissance de
|
Au sein même de votre description YAML, vous pouvez utiliser la puissance de
|
||||||
Jinja2 :
|
Jinja2 :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
@ -414,7 +412,7 @@ puis celles de `/vars/webservers_Debian.yml` seront chargées dans le contexte.
|
||||||
#### Conditions
|
#### Conditions
|
||||||
|
|
||||||
Une autre utilisation possible des variables est d'appliquer ou de passer des
|
Une autre utilisation possible des variables est d'appliquer ou de passer des
|
||||||
tâches. Par exemple :
|
tâches. Par exemple :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```yaml
|
```yaml
|
||||||
|
|
|
@ -3,32 +3,32 @@
|
||||||
Déploiement d'un service via Ansible
|
Déploiement d'un service via Ansible
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
Très bien ! vous semblez avoir compris le fonctionnement de notre
|
Très bien ! vous semblez avoir compris le fonctionnement de notre
|
||||||
gestionnaire de configuration.
|
gestionnaire de configuration.
|
||||||
|
|
||||||
Après cet échauffement, vous devriez être prêt à créer un *playbook*
|
Après cet échauffement, vous devriez être prêt à créer un *playbook*
|
||||||
dédié à l'installation de [Tiny Tiny RSS](https://tt-rss.org/) :
|
dédié à l'installation de [Tiny Tiny RSS](https://tt-rss.org/) :
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Très utile pour faire de la veille technologique, ce magnifique
|
Très utile pour faire de la veille technologique, ce magnifique
|
||||||
lecteur de flux RSS vous permettra de ne plus jamais rien manquer !
|
lecteur de flux RSS vous permettra de ne plus jamais rien manquer !
|
||||||
|
|
||||||
Vous trouverez la documentation d'installation précise et détaillée
|
Vous trouverez la documentation d'installation précise et détaillée
|
||||||
à : <https://git.tt-rss.org/fox/tt-rss/wiki/InstallationNotes>.
|
à : <https://git.tt-rss.org/fox/tt-rss/wiki/InstallationNotes>.
|
||||||
|
|
||||||
Choisissez judicieusement votre serveur web et votre serveur de base
|
Choisissez judicieusement votre serveur web et votre serveur de base
|
||||||
de données ; ceux-ci ne sont pas imposés.
|
de données ; ceux-ci ne sont pas imposés.
|
||||||
|
|
||||||
Vous devrez attacher une importance tout particulière à la sécurité de
|
Vous devrez attacher une importance tout particulière à la sécurité de
|
||||||
la solution que vous déployez : configurations durcies, utilisateur
|
la solution que vous déployez : configurations durcies, utilisateur
|
||||||
dédié lorsque c'est possible (pas de `root` !), droits d'accès et
|
dédié lorsque c'est possible (pas de `root` !), droits d'accès et
|
||||||
permissions des répertoires, etc.
|
permissions des répertoires, etc.
|
||||||
|
|
||||||
Profitez des [modules de base de
|
Profitez des [modules de base de
|
||||||
données](http://docs.ansible.com/ansible/latest/list_of_database_modules.html)
|
données](http://docs.ansible.com/ansible/latest/list_of_database_modules.html)
|
||||||
pour l'initialiser correctement. Et bien entendu de l'ensemble des
|
pour l'initialiser correctement. Et bien entendu de l'ensemble des
|
||||||
modules décrits dans la documentation standard !
|
modules décrits dans la documentation standard !
|
||||||
|
|
||||||
|
|
||||||
## Configurations
|
## Configurations
|
||||||
|
|
|
@ -4,10 +4,10 @@ Mise en place
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Pour réaliser ce TP, vous allez avoir besoin de créer une machine virtuelle,
|
Pour réaliser ce TP, vous allez avoir besoin de créer une machine virtuelle,
|
||||||
possédant les caractéristiques suivantes :
|
possédant les caractéristiques suivantes :
|
||||||
|
|
||||||
- 1 disque de quelques Gio ;
|
- 1 disque de quelques Gio ;
|
||||||
- 1 lecteur de CD-ROM ;
|
- 1 lecteur de CD-ROM ;
|
||||||
- 1 interface réseau `virtio`, sur laquelle il sera possible d'obtenir une IP
|
- 1 interface réseau `virtio`, sur laquelle il sera possible d'obtenir une IP
|
||||||
permettant d'aller sur Internet.
|
permettant d'aller sur Internet.
|
||||||
|
|
||||||
|
@ -16,8 +16,8 @@ appréciation. L'ISO est réputée supportée par *Hyper-V* (Windows), *qemu*/*K
|
||||||
(macOS, Linux, Windows) et VMware (macOS, Windows).
|
(macOS, Linux, Windows) et VMware (macOS, Windows).
|
||||||
|
|
||||||
L'hyperviseur qui vous laissera le plus de liberté (et avec lequel vous pourrez
|
L'hyperviseur qui vous laissera le plus de liberté (et avec lequel vous pourrez
|
||||||
apprendre le plus de choses !) est sans doute *qemu*, sous Linux ; vous pouvez
|
apprendre le plus de choses !) est sans doute *qemu*, sous Linux ; vous pouvez
|
||||||
le lancer avec la commande :
|
le lancer avec la commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -36,7 +36,7 @@ Vous pouvez télécharger l'ISO du TP depuis
|
||||||
<https://adlin.nemunai.re/ressources/tuto2.iso>.
|
<https://adlin.nemunai.re/ressources/tuto2.iso>.
|
||||||
|
|
||||||
Cette image contient un système Debian minimaliste, en partie préinstallé afin
|
Cette image contient un système Debian minimaliste, en partie préinstallé afin
|
||||||
de vous permettre de commencer à travailler sans plus attendre !
|
de vous permettre de commencer à travailler sans plus attendre !
|
||||||
|
|
||||||
|
|
||||||
Gérer le réseau de son hyperviseur
|
Gérer le réseau de son hyperviseur
|
||||||
|
@ -48,7 +48,7 @@ au moins à un réseau local, pour permettre d'y apporter les mises à jour).
|
||||||
La première chose qu'il va falloir faire avec notre hyperviseur, est donc de
|
La première chose qu'il va falloir faire avec notre hyperviseur, est donc de
|
||||||
lui indiquer comment notre machine virtuelle accédera au réseau.
|
lui indiquer comment notre machine virtuelle accédera au réseau.
|
||||||
|
|
||||||
**Note:** Nous ne présenterons ici que les méthodes qui permettent d'obtenir un
|
**Note :** Nous ne présenterons ici que les méthodes qui permettent d'obtenir un
|
||||||
réseau ayant toutes les caractéristiques d'utilisation et de contrôle que l'on
|
réseau ayant toutes les caractéristiques d'utilisation et de contrôle que l'on
|
||||||
pourrait en attendre. Nous ne verrons donc pas le mode `user` de *qemu* par
|
pourrait en attendre. Nous ne verrons donc pas le mode `user` de *qemu* par
|
||||||
exemple.
|
exemple.
|
||||||
|
@ -71,12 +71,12 @@ nombre d'interfaces physiques existantes.
|
||||||
Concrètement, l'opération est assez fastidieuse à réaliser à la main, car cela
|
Concrètement, l'opération est assez fastidieuse à réaliser à la main, car cela
|
||||||
demande de détacher le périphérique (via
|
demande de détacher le périphérique (via
|
||||||
<span lang="en-US">`/sys/bus/pci/devices/0000:03:00.0/driver/unbind`</span>,
|
<span lang="en-US">`/sys/bus/pci/devices/0000:03:00.0/driver/unbind`</span>,
|
||||||
par exemple pour une carte `enp0s3`) ; avant de l'assigner à notre machine
|
par exemple pour une carte `enp0s3`) ; avant de l'assigner à notre machine
|
||||||
virtuelle :
|
virtuelle :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
qemu-system-x86_64 -device pci-assign,host=03:00.0
|
qemu-system-x86_64 [...] -device pci-assign,host=03:00.0
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -84,21 +84,21 @@ qemu-system-x86_64 -device pci-assign,host=03:00.0
|
||||||
### Interface virtuelle
|
### Interface virtuelle
|
||||||
|
|
||||||
On se rend compte que la solution d'avoir une interface physique par machine
|
On se rend compte que la solution d'avoir une interface physique par machine
|
||||||
virtuelle n'est pas bien idéale et devient vite très onéreuse.
|
virtuelle n'est pas bien pérenne et devient vite très onéreuse.
|
||||||
|
|
||||||
La solution qui s'offre à nous est donc de virtualiser la carte ethernet :
|
La solution qui s'offre à nous est donc de virtualiser la carte ethernet :
|
||||||
notre hyperviseur va alors **émuler** le comportement d'une carte (*qemu* émule
|
notre hyperviseur va alors **émuler** le comportement d'une carte (*qemu* émule
|
||||||
des cartes PCI `e1000`, `rtl8139` pour les plus connues) : côté machine
|
des cartes PCI `e1000` ou `rtl8139` pour les plus connues) : côté machine
|
||||||
virtuelle, l'hyperviseur va communiquer sur le bus PCI, tandis que côté hôte,
|
virtuelle, l'hyperviseur va communiquer sur le bus PCI virtualisé, tandis que
|
||||||
il va créer une nouvelle interface virtuelle (de type `tap`), se comportant
|
côté hôte, il va créer une nouvelle interface virtuelle (de type `tap`), se
|
||||||
comme un tunnel vers la machine virtuelle.
|
comportant comme un tunnel vers la machine virtuelle.
|
||||||
|
|
||||||
Pour attacher une carte réseau à notre machine virtuelle et créer l'interface
|
Pour attacher une carte réseau à notre machine virtuelle et créer l'interface
|
||||||
correspondante sur l'hôte, ce sera grâce à la commande :
|
correspondante sur l'hôte, ce sera grâce à la commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
qemu-system-x86_64 -net nic,model=e1000 -net tap,ifname=tap0,script=no,downscript=no
|
qemu-system-x86_64 [...] -net nic,model=e1000 -net tap,ifname=tap0,script=no,downscript=no
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ machines virtuelles, après avoir assigné des IP aux interfaces correspondantes
|
||||||
Il faut alors assigner une IP à l'interface de la machine hôte, et à la machine
|
Il faut alors assigner une IP à l'interface de la machine hôte, et à la machine
|
||||||
virtuelle.
|
virtuelle.
|
||||||
|
|
||||||
Par exemple : nous assignerons `172.23.69.1/31` à l'interface dans notre
|
Par exemple : nous assignerons `172.23.69.1/31` à l'interface dans notre
|
||||||
machine virtuelle et `172.23.69.0/31` à l'interface correspondante de
|
machine virtuelle et `172.23.69.0/31` à l'interface correspondante de
|
||||||
l'hôte. Ainsi, l'hôte pourra contacter cette machine virtuelle à
|
l'hôte. Ainsi, l'hôte pourra contacter cette machine virtuelle à
|
||||||
`172.23.69.1/31`, et inversement.
|
`172.23.69.1/31`, et inversement.
|
||||||
|
@ -117,11 +117,11 @@ l'hôte. Ainsi, l'hôte pourra contacter cette machine virtuelle à
|
||||||
Parmi les périphériques que peut émuler *qemu*, il y a le contrôleur un peu
|
Parmi les périphériques que peut émuler *qemu*, il y a le contrôleur un peu
|
||||||
particulier `virtio`. Ce pilote va, conjointement avec un support adapté côté
|
particulier `virtio`. Ce pilote va, conjointement avec un support adapté côté
|
||||||
système d'exploitation invité, permettre de se passer de la couche
|
système d'exploitation invité, permettre de se passer de la couche
|
||||||
d'émulation : les paquets seront directement envoyés par le système hôte dans un
|
d'émulation : les paquets seront directement envoyés par le système hôte dans un
|
||||||
format compréhensible sans effort, par le système invité.
|
format compréhensible sans effort, par le système invité.
|
||||||
|
|
||||||
Ce principe a été introduit par la paravirtualisation (utilisé notamment par
|
Ce principe a été introduit par la paravirtualisation (utilisé notamment par
|
||||||
Xen) : au moyen d'un noyau spécialement conçu (soit pour être hôte, soit pour
|
Xen) : au moyen d'un noyau spécialement conçu (soit pour être hôte, soit pour
|
||||||
être invité), l'hôte et l'invité peuvent communiquer entre-eux directement,
|
être invité), l'hôte et l'invité peuvent communiquer entre-eux directement,
|
||||||
sans passer par une couche d'émulation du matériel.
|
sans passer par une couche d'émulation du matériel.
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ contrôleurs de disques.
|
||||||
Un pont réseau va nous permettre de faire communiquer entre-elles plusieurs
|
Un pont réseau va nous permettre de faire communiquer entre-elles plusieurs
|
||||||
interfaces (qu'elles soient physiques ou virtuelles).
|
interfaces (qu'elles soient physiques ou virtuelles).
|
||||||
|
|
||||||
Pour créer un nouveau pont, on utilise la commande `ip` comme suit :
|
Pour créer un nouveau pont, on utilise la commande `ip` comme suit :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -145,7 +145,7 @@ ip link add name br0 type bridge
|
||||||
où `br0` est le nom que l'on souhaite attribuer à l'interface.
|
où `br0` est le nom que l'on souhaite attribuer à l'interface.
|
||||||
|
|
||||||
|
|
||||||
Pour assigner à un pont une interface, on utilise la commande suivante :
|
Pour assigner à un pont une interface, on utilise la commande suivante :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -157,7 +157,7 @@ où `veth0` est le nom de l'interface que l'on souhaite inclure dans le pont
|
||||||
`br0`.
|
`br0`.
|
||||||
|
|
||||||
|
|
||||||
Pour consulter la liste des interfaces concentrées par le pont `br0` :
|
Pour consulter la liste des interfaces concentrées par le pont `br0` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -174,16 +174,16 @@ machine hôte sur ce réseau virtuel.
|
||||||
|
|
||||||
Il est tout à fait possible d'ajouter une interface réseau physique à un pont,
|
Il est tout à fait possible d'ajouter une interface réseau physique à un pont,
|
||||||
et c'est sans doute la méthode la plus simple pour que les machines virtuelles
|
et c'est sans doute la méthode la plus simple pour que les machines virtuelles
|
||||||
puissent accéder à internet : si le réseau local de la machine hôte fourni des
|
puissent accéder à internet : si le réseau local de la machine hôte fourni des
|
||||||
adresses IP par DHCP à toute machine rejoignant le réseau.
|
adresses IP par DHCP à toute machine rejoignant le réseau.
|
||||||
|
|
||||||
|
|
||||||
Lorsque le pont existe, `qemu` peut créer l'interface virtuelle et l'assigner à
|
Lorsque le pont existe, `qemu` peut créer l'interface virtuelle et l'assigner à
|
||||||
un pont directement, avec la commande :
|
un pont directement, avec la commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
qemu-system-x86_64 -net bridge,br=br0
|
qemu-system-x86_64 [...] -net bridge,br=br0
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ qemu-system-x86_64 -net bridge,br=br0
|
||||||
### NAT
|
### NAT
|
||||||
|
|
||||||
Dans certaines situations, il n'est pas aussi simple d'avoir une IP ou de
|
Dans certaines situations, il n'est pas aussi simple d'avoir une IP ou de
|
||||||
communiquer avec le réseau utilisé par la machine hôte : par exemple, si le
|
communiquer avec le réseau utilisé par la machine hôte : par exemple, si le
|
||||||
nombre d'IP disponibles n'est pas suffisant par rapport au nombre de machines
|
nombre d'IP disponibles n'est pas suffisant par rapport au nombre de machines
|
||||||
que l'on a besoin de créer, ou bien parce que le réseau nécessite d'être
|
que l'on a besoin de créer, ou bien parce que le réseau nécessite d'être
|
||||||
authentifié (netsoul, portail captif, ...) et qu'il est difficile ou inadapté
|
authentifié (netsoul, portail captif, ...) et qu'il est difficile ou inadapté
|
||||||
|
@ -211,13 +211,22 @@ dnsmasq --interface=br0 --bind-interfaces --dhcp-range=172.20.0.2,172.20.255.254
|
||||||
Afin que les machines virtuelles puissent accéder à Internet, il est nécessaire
|
Afin que les machines virtuelles puissent accéder à Internet, il est nécessaire
|
||||||
de faire du NAT.
|
de faire du NAT.
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
|
```bash
|
||||||
|
sysctl -w net.ipv4.ip_forward=1
|
||||||
|
iptables -A POSTROUTING -o wlp3s0 -j MASQUERADE
|
||||||
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
|
où `wlp3s0` correspond à l'interface de notre route par défaut.
|
||||||
|
|
||||||
|
|
||||||
Démarrer la machine virtuelle
|
Démarrer la machine virtuelle
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
### Ajouter un disque vierge
|
### Ajouter un disque vierge
|
||||||
|
|
||||||
Pour réaliser ce TP, nous aurons besoin d'un disque vierge :
|
Pour réaliser ce TP, nous aurons besoin d'un disque vierge :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -225,11 +234,11 @@ qemu-img create -f qcow2 /tmp/disk.qcow2 4G
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Ce disque sera à attacher à notre machine virtuelle de cette manière :
|
Ce disque sera à attacher à notre machine virtuelle de cette manière :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
qemu-system-x86_64 -drive file=/tmp/disk.qcow2
|
qemu-system-x86_64 [...] -drive file=/tmp/disk.qcow2
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -237,11 +246,11 @@ qemu-system-x86_64 -drive file=/tmp/disk.qcow2
|
||||||
### Démarrer sur l'ISO
|
### Démarrer sur l'ISO
|
||||||
|
|
||||||
Tout comme le disque, nous utilisons ici le paramètre `-drive` pour donner un
|
Tout comme le disque, nous utilisons ici le paramètre `-drive` pour donner un
|
||||||
ISO de CD :
|
ISO de CD :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
qemu-system-x86_64 -boot d -drive format=raw,media=cdrom,readonly,file=tuto2.iso
|
qemu-system-x86_64 [...] -boot d -drive format=raw,media=cdrom,readonly,file=tuto2.iso
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -267,7 +276,7 @@ mécanismes de découverte automatique permettent à la pile IPv6 de se configur
|
||||||
seule.
|
seule.
|
||||||
|
|
||||||
Pour dialoguer avec un serveur DHCP, il convient de lancer un client DHCP sur
|
Pour dialoguer avec un serveur DHCP, il convient de lancer un client DHCP sur
|
||||||
la machine que l'on souhaite configurer : `udhcpc`, `dhcpcd`, `isc-dhcp-client`
|
la machine que l'on souhaite configurer : `udhcpc`, `dhcpcd`, `isc-dhcp-client`
|
||||||
(`dhclient`), etc. Généralement, ces clients prennent en argument l'interface
|
(`dhclient`), etc. Généralement, ces clients prennent en argument l'interface
|
||||||
réseau à configurer.
|
réseau à configurer.
|
||||||
|
|
||||||
|
@ -275,7 +284,7 @@ réseau à configurer.
|
||||||
### Vérification des paramètres IP
|
### Vérification des paramètres IP
|
||||||
|
|
||||||
Parmi les configurations généralement effectuées automatiquement par le serveur
|
Parmi les configurations généralement effectuées automatiquement par le serveur
|
||||||
DHCP, on trouve les éléments suivants :
|
DHCP, on trouve les éléments suivants :
|
||||||
|
|
||||||
#### Lien
|
#### Lien
|
||||||
|
|
||||||
|
@ -286,11 +295,11 @@ pouvoir émettre un paquet sur le réseau.
|
||||||
```
|
```
|
||||||
42sh$ ip link
|
42sh$ ip link
|
||||||
1: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
|
1: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Manuellement, l'état d'un lien se change avec la commande :
|
Manuellement, l'état d'un lien se change avec la commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -302,7 +311,7 @@ ip link set enp3s0 up
|
||||||
#### Adresses
|
#### Adresses
|
||||||
|
|
||||||
Après avoir reçu la validation (paquet `DHCPACK`) du serveur DHCP, l'IP est
|
Après avoir reçu la validation (paquet `DHCPACK`) du serveur DHCP, l'IP est
|
||||||
définie sur l'interface, via une méthode similaire à la commande :
|
définie sur l'interface, via une méthode similaire à la commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -315,7 +324,7 @@ ip address add 192.168.0.42/24 dev enp3s0
|
||||||
|
|
||||||
Parmi toutes les informations embarquées dans un paquet DHCP, figure
|
Parmi toutes les informations embarquées dans un paquet DHCP, figure
|
||||||
généralement la route par défaut, permettant de localiser la passerelle du
|
généralement la route par défaut, permettant de localiser la passerelle du
|
||||||
réseau : le routeur conduisant généralement à Internet.
|
réseau : le routeur conduisant généralement à Internet.
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
|
@ -326,11 +335,11 @@ default via 192.168.0.254 dev enp3s0
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Sur un réseau IPv6, les routes sont obtenues grâce au *Neighbor Discovery
|
Sur un réseau IPv6, les routes sont obtenues grâce au *Neighbor Discovery
|
||||||
Protocol* : chaque routeur émet à intervalle régulier ou sur sollicitation un
|
Protocol* : chaque routeur émet à intervalle régulier ou sur sollicitation un
|
||||||
paquet détaillant ses routes.
|
paquet détaillant ses routes.
|
||||||
|
|
||||||
|
|
||||||
Manuellement, on ajoute une route par défaut avec la commande :
|
Manuellement, on ajoute une route par défaut avec la commande :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
|
@ -348,7 +357,7 @@ La dernière chose que l'on a généralement besoin de configurer pour pouvoir
|
||||||
accéder pleinement à Internet, c'est un serveur de noms de domaine.
|
accéder pleinement à Internet, c'est un serveur de noms de domaine.
|
||||||
|
|
||||||
Les informations relatives à la résolution de noms sont inscrites dans le
|
Les informations relatives à la résolution de noms sont inscrites dans le
|
||||||
fichier `/etc/resolv.conf` :
|
fichier `/etc/resolv.conf` :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
|
|
|
@ -7,7 +7,7 @@ Présentation du système d'information
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
Le système d'information que vous allez avoir à gérer aujourd'hui est très
|
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 !
|
restreint, car il ne se compose que d'une seule machine !
|
||||||
|
|
||||||
Cette semaine, nous allons installer et configurer de nombreux services sur
|
Cette semaine, nous allons installer et configurer de nombreux services sur
|
||||||
cette machine.
|
cette machine.
|
||||||
|
@ -17,7 +17,7 @@ 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
|
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
|
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,
|
la manière dont une installation se fait, ou du fonctionnement du bootloader,
|
||||||
n'hésitez pas à poser vos questions !
|
n'hésitez pas à poser vos questions !
|
||||||
|
|
||||||
|
|
||||||
Accéder à la machine virtuelle
|
Accéder à la machine virtuelle
|
||||||
|
@ -51,11 +51,11 @@ que vous n'aurez pas démarré dans le mode "disque dur configuré".
|
||||||
### Table des partitions
|
### Table des partitions
|
||||||
|
|
||||||
Si votre disque a fraîchement été créé, celui-ci ne contient encore aucune
|
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 !
|
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
|
Pour éditer (ou créer ...) la table de partitions d'un disque, vous pouvez
|
||||||
utiliser les utilitaires `fdisk`, `cfdisk`, `sfdisk`, `parted`, `gdisk`. Chacun
|
utiliser les utilitaires `fdisk`, `cfdisk`, `sfdisk`, `parted`, `gdisk`. Chacun
|
||||||
de ses programmes prend en argument le disque à modifier :
|
de ses programmes prend en argument le disque à modifier :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
|
@ -66,11 +66,11 @@ cfdisk /dev/sda
|
||||||
Le TP ne se concentrant pas sur la phase de démarrage, vous pouvez ignorer les
|
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.
|
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
|
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
|
majeure partie de votre disque, tandis que la deuxième peut se limiter à une
|
||||||
centaine de MB, pour l'exercice.
|
centaine de MB, pour l'exercice.
|
||||||
|
|
||||||
Assurez-vous de bien lire tous les messages d'avertissements ! Il est important
|
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
|
que vous comprenniez ce que vous faites à ce stade, car cela peut entraîner des
|
||||||
pertes de données.
|
pertes de données.
|
||||||
|
|
||||||
|
@ -81,14 +81,14 @@ Les partitions sont maintenant créées, mais il n'est pas encore possible de le
|
||||||
utiliser telles-quelles. Afin de pouvoir les utiliser, il est d'abord nécessaire
|
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,
|
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
|
chacun ayant des caractéristiques et des usages particuliers. Le système de
|
||||||
fichiers « généraliste » est l'*Extended File System* (`ext`),
|
fichiers « généraliste » est l'*Extended File System* (`ext`),
|
||||||
|
|
||||||
Durant la phase de formatage, les structures (telles que les tableaux d'inœuds,
|
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
|
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
|
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
|
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
|
é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
|
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
|
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
|
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
|
doit se terminer par une entrée `NULL`, qui sera interprété comme une fin de
|
||||||
|
@ -120,7 +120,7 @@ Pour formater une partition d'échange, on utilise l'utilitaire `mkswap`.
|
||||||
|
|
||||||
#### Montage des partitions annexes
|
#### Montage des partitions annexes
|
||||||
|
|
||||||
Automatique ne veut pas dire magique ! Pour chaque partition dont on dispose,
|
Automatique ne veut pas dire magique ! Pour chaque partition dont on dispose,
|
||||||
il va falloir indiquer dans le fichier `/etc/fstab` l'emplacement dans
|
il va falloir indiquer dans le fichier `/etc/fstab` l'emplacement dans
|
||||||
l'arborescence où attacher la partition ainsi que quelques autres
|
l'arborescence où attacher la partition ainsi que quelques autres
|
||||||
caractéristiques.
|
caractéristiques.
|
||||||
|
@ -138,7 +138,7 @@ Notons que le montage des partitions est effectué par le système
|
||||||
d'initialisation (un simple appel à la commande `mount -a` ou équivalent). À
|
d'initialisation (un simple appel à la commande `mount -a` ou équivalent). À
|
||||||
aucun moment le noyau ne va lire le contenu de ce fichier.
|
aucun moment le noyau ne va lire le contenu de ce fichier.
|
||||||
|
|
||||||
Voir aussi : `fstab(5)`
|
Voir aussi : `fstab(5)`
|
||||||
|
|
||||||
#### Montage de la racine
|
#### Montage de la racine
|
||||||
|
|
||||||
|
@ -164,10 +164,10 @@ 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
|
pouvoir y apporter des modifications. Par exemple pour installer un client
|
||||||
DHCP, afin de vous connecter au réseau facilement !
|
DHCP, afin de vous connecter au réseau facilement !
|
||||||
|
|
||||||
Deux solutions s'offrent à vous pour rendre persistant votre configuration réseau :
|
Deux solutions s'offrent à vous pour rendre persistant votre configuration réseau :
|
||||||
|
|
||||||
- éditer le fichier `/etc/network/interfaces`, en suivant les directives de la
|
- éditer le fichier `/etc/network/interfaces`, en suivant les directives de la
|
||||||
[documentation Debian](https://wiki.debian.org/NetworkConfiguration) ;
|
[documentation Debian](https://wiki.debian.org/NetworkConfiguration) ;
|
||||||
- éditer le fichier `/etc/systemd/network/50-dhcp.network`, en suivant les
|
- éditer le fichier `/etc/systemd/network/50-dhcp.network`, en suivant les
|
||||||
directives de
|
directives de
|
||||||
[`systemd-networkd`](https://www.freedesktop.org/software/systemd/man/systemd.network.html).
|
[`systemd-networkd`](https://www.freedesktop.org/software/systemd/man/systemd.network.html).
|
||||||
|
@ -182,7 +182,7 @@ Se mettre à l'aise
|
||||||
Un serveur SSH est déjà installé et configuré pour vous permettre d'avoir une
|
Un serveur SSH est déjà installé et configuré pour vous permettre d'avoir une
|
||||||
interface plus agréable que celle de votre hyperviseur.
|
interface plus agréable que celle de votre hyperviseur.
|
||||||
|
|
||||||
**Attention :** si votre machine virtuelle est directement connectée au réseau
|
**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
|
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
|
`root` pour éviter que n'importe qui sur le réseau local (et ayant accès à ce
|
||||||
TP), ne rentre sur votre machine.
|
TP), ne rentre sur votre machine.
|
||||||
|
@ -206,26 +206,26 @@ Utilisez `adduser(8)` pour vous créer votre propre compte, et au minimum
|
||||||
`passwd(1)` pour lui définir un mot de passe.
|
`passwd(1)` pour lui définir un mot de passe.
|
||||||
|
|
||||||
C'est bon, vous pouvez maintenant commencer à utiliser le client SSH de votre
|
C'est bon, vous pouvez maintenant commencer à utiliser le client SSH de votre
|
||||||
choix pour administrer votre machine virtuelle !
|
choix pour administrer votre machine virtuelle !
|
||||||
|
|
||||||
|
|
||||||
### `su` -- Switch User
|
### `su` -- Switch User
|
||||||
|
|
||||||
Mais comment faire des opérations d'administration, avec un simple compte
|
Mais comment faire des opérations d'administration, avec un simple compte
|
||||||
utilisateur ?
|
utilisateur ?
|
||||||
|
|
||||||
La commande `su -` permet de changer devenir `root`, moyennant la connaissance
|
La commande `su -` permet de devenir `root`, moyennant la connaissance du mot
|
||||||
du mot de passe du compte. Notez l'option `-` passée à la commande, cela permet
|
de passe du compte `root`. Notez l'option `-` passée à la commande, cela permet
|
||||||
de réinitialiser l'environnement comme si l'on venait de se connecter en tant
|
de réinitialiser l'environnement comme si l'on venait de se connecter en tant
|
||||||
que l'utilisateur cible.
|
que l'utilisateur cible.
|
||||||
|
|
||||||
Afin de simplifier les opérations d'administration, une suite de commandes
|
Afin de simplifier les opérations d'administration, une suite de commandes
|
||||||
fournies par le paquet `sudo` va devenir votre couteau suisse
|
fournies par le paquet `sudo` va devenir votre couteau suisse
|
||||||
d'administrateur. Utilisez :
|
d'administrateur. Utilisez :
|
||||||
|
|
||||||
- `sudo` : pour exécuter n'importe quelle commande, avec les privilèges
|
- `sudo` : pour exécuter n'importe quelle commande, avec les privilèges
|
||||||
administrateur ;
|
administrateur ;
|
||||||
- `sudoedit` : pour éditer un fichier avec les droits administrateurs.
|
- `sudoedit` : pour éditer un fichier avec les droits administrateurs.
|
||||||
|
|
||||||
Après avoir installé le paquet, vous devrez ajouter les utilisateurs autorisés
|
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
|
à se servir de `sudo` dans le groupe `sudo` ou `wheel` (en fonction des
|
||||||
|
@ -233,8 +233,8 @@ distributions). Vous pouvez également définir des conditions plus précise en
|
||||||
éditant le fichier `/etc/sudoers` (utilisez impérativement `visudo(1)` pour
|
éditant le fichier `/etc/sudoers` (utilisez impérativement `visudo(1)` pour
|
||||||
éditer ce fichier).
|
éditer ce fichier).
|
||||||
|
|
||||||
**Super astuce !** votre terminal rit encore de vous, affichant `Permission
|
**Super astuce !** votre terminal rit encore de vous, affichant `Permission
|
||||||
Denied` car vous avez oublié de préfixer votre commande par `sudo` ? essayez :
|
Denied` car vous avez oublié de préfixer votre commande par `sudo` ? essayez :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
|
@ -244,11 +244,11 @@ sudo !!
|
||||||
|
|
||||||
### Top confort dans son coquillage
|
### Top confort dans son coquillage
|
||||||
|
|
||||||
Un shell brut de configuration, c'est souvent source d'erreur ! N'hésitez pas à
|
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
|
recopier votre configuration et à changer votre shell (`chsh(1)`) pour vous
|
||||||
trouver dans un environnement plus amical !
|
trouver dans un environnement plus amical !
|
||||||
|
|
||||||
On évitera toute configuration sur le compte `root`, étant donné qu'il est
|
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,
|
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,
|
une configuration basique aura plus de chance de résister. De toute manière,
|
||||||
vous n'utiliserez jamais ce compte !
|
vous n'utiliserez jamais ce compte !
|
||||||
|
|
Reference in a new issue