Le serveur que personne ne sait refaire
Julien travaille pour une mutuelle à Nantes. Le serveur qui calcule les remboursements tombe un lundi.
Il a été installé à la main il y a quatre ans, par un collègue parti depuis. Personne ne sait quels réglages il avait.
L'équipe met trois jours à le refaire. Cette leçon montre comment éviter cette situation.
À la fin de cette leçon
Remarque
Je peux expliquer pourquoi on décrit les serveurs dans des fichiers.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Infrastructure | les machines, réseaux et disques sur lesquels tourne un service | |
| Infrastructure as code | décrire l'infrastructure dans des fichiers texte | |
| État voulu | ce que le fichier demande | |
| Plan | la liste des changements avant de les faire | |
| Appliquer | faire réellement les changements du plan | terraform apply |
| Dérive | un écart entre le fichier et la réalité |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un fichier dit ce qu'on veut
Avec l'infrastructure as code, on n'installe plus un serveur en cliquant. On écrit dans un fichier les machines que l'on veut, leur taille et leur système.
Un outil comme Terraform lit le fichier et crée les machines chez l'hébergeur. Ici, l'hébergeur est Scaleway.
Lancez le bloc ci-dessous, puis faites la modification du dernier commentaire.
Lire un fichier Terraform
mkdir -p infra-paie && cd infra-paie
cat > serveurs.tf <<'FIN'
resource "scaleway_instance_server" "paie" {
type = "DEV1-S"
image = "ubuntu_jammy"
}
resource "scaleway_instance_server" "sauvegarde" {
type = "DEV1-S"
image = "ubuntu_jammy"
}
FIN
# Quelles machines ce fichier demande-t-il ?
grep resource serveurs.tf
# Quelle taille de machine pour chacune ?
grep type serveurs.tf
# Changez la taille de "paie" en DEV1-M, puis relancez.
L'outil compare, puis propose un plan
L'outil regarde ce qui existe déjà. Il le compare à l'état voulu du fichier.
Il affiche un plan : ce qu'il va créer, modifier ou supprimer. Une personne relit ce plan. Ensuite seulement, on l'applique.
Le tableau montre un vrai plan. Le bloc suivant refait la même comparaison avec deux listes.
Ce qu'affiche un vrai plan
| Ligne affichée | Ce que cela veut dire |
|---|---|
| + resource "scaleway_instance_server" "supervision" | Cette machine sera créée |
| ~ type = "DEV1-S" -> "DEV1-M" | Cette machine sera modifiée |
| - resource "scaleway_instance_server" "ancien-test" | Cette machine sera supprimée |
| Plan: 1 to add, 1 to change, 1 to destroy. | Le résumé : une création, une modification, une suppression |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Comparer le voulu et l'existant
# Ce que le fichier demande
printf 'paie\nsauvegarde\nsupervision\n' | sort > voulu.txt
# Ce qui existe vraiment chez l'hébergeur
printf 'paie\nancien-test\n' | sort > actuel.txt
echo "À créer :"
comm -23 voulu.txt actuel.txt
echo "À supprimer :"
comm -13 voulu.txt actuel.txt
# Ajoutez ancien-test dans voulu.txt, puis relancez.
# Il ne sera plus supprimé.
Ce que l'équipe y gagne
Le fichier est rangé dans le dépôt, avec le code. Chaque changement a donc un auteur, une date et une raison.
Un collègue relit le changement avant qu'il soit appliqué, comme pour du code.
Si un serveur disparaît, on applique le même fichier et il revient à l'identique. Pour Julien, trois jours seraient devenus vingt minutes.
Une erreur fréquente
Attention
Beaucoup pensent qu'on peut corriger un serveur à la main et laisser le fichier tel quel. Le fichier ne dit alors plus la vérité : c'est une dérive. Au prochain plan, l'outil voudra annuler la correction. Toute modification passe donc par le fichier, même la plus petite.
À la main ou dans un fichier
| Question | Installé à la main | Décrit dans un fichier |
|---|---|---|
| Qui a changé quoi ? | Personne ne sait | L'historique du dépôt le dit |
| Refaire le serveur | Des jours, de mémoire | Quelques minutes |
| Un serveur de test identique | Difficile | Le même fichier, appliqué deux fois |
| Relecture avant changement | Rare | Normale, comme pour le code |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.