Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases d’OpenTofu

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de machine virtuelle12 min de lecture10 commandes

Le dire une fois, le construire à chaque fois

Un établissement veut les mêmes dix ordinateurs dans chaque salle, installés de la même façon. À la main, dix fois, on obtient dix salles un peu différentes. L’infrastructure as code (l’infrastructure décrite par du code) écrit plutôt les salles dans un fichier : un outil construit ce que le fichier décrit, autant de fois qu’on veut, et montre ce qu’il va changer avant de le changer.

À la fin de cette leçon

Remarque

Je peux dire ce qu’est un plan, à quoi sert l’état, et pourquoi un outil planifie avant de changer quoi que ce soit.

Mots-clés

  • OpenTofu : un outil libre et gratuit qui lit des fichiers et construit ce qu’ils décrivent.
  • Ressource : une chose décrite par un fichier. Ici elle garde une valeur ; avec un provider, ce pourrait être un serveur.
  • Plan : la liste des changements qu’OpenTofu ferait, montrée avant qu’il les fasse.
  • Apply (appliquer) : faire les changements que le plan a listés.
  • État (state) : le fichier où OpenTofu note ce qu’il a déjà construit.
  • Provider : un module qui parle à un vrai cloud. Cette machine ne peut pas en télécharger.

Pour commencer : ce que tu sais déjà

Remarque

Réponds dans ta tête. 1. Qu’est-ce qu’une variable dans un programme ? 2. Si tu demandes deux fois une tasse de thé, en as-tu une ou deux ? 3. À quoi sert une liste de choses à faire le lendemain ? Tu vas retrouver les trois dans un instant.

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de cette leçon. Ce lab est une machine Ubuntu entière, rien que pour toi : elle met un peu plus de temps à démarrer qu’un conteneur, et elle télécharge OpenTofu la première fois, il te faut donc un compte gratuit. Chaque bouton Exécuter tape sa commande dans le terminal de la machine, l’une après l’autre, dans la même session. Si l’un d’eux dit que la machine démarre encore, attends quelques secondes et appuie de nouveau. Pour les regarder, ou pour taper les tiens, appuie sur Ouvrir le terminal dans la barre.

Un projet est un dossier de fichiers

Le lab te donne un tout petit projet dans ~/tofu-lab/hello. cd t’y emmène. Le fichier main.tf contient une ressource nommée hello du type intégré terraform_data. Elle garde la valeur "hello" comme input (entrée) et la rend comme output (sortie). Un second bloc affiche cette sortie. Rien n’est créé en dehors d’OpenTofu : le lab n’a aucun cloud où créer quoi que ce soit.

Commande
cd ~/tofu-lab/hello

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
cat main.tf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Plan : regarder avant de changer quoi que ce soit

tofu init prépare le dossier. Un vrai projet y télécharge ses providers ; celui-ci n’en a aucun à chercher, c’est donc immédiat. tofu plan compare ensuite le fichier avec l’état et affiche ce qu’il ferait. Un + veut dire créer, et la dernière ligne fait le total : Plan: 1 to add, 0 to change, 0 to destroy. Un plan ne change rien.

Commande
tofu init

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
tofu plan

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Apply : le faire, et le mémoriser

tofu apply fait ce que le plan a listé. Sans -auto-approve, il te demande de taper yes d’abord ; le lab l’ajoute pour que le bouton le fasse à ta place. Il se termine par Apply complete! Resources: 1 added, 0 changed, 0 destroyed. La ressource est maintenant notée dans l’état. tofu state list montre ce que l’état contient.

Commande
tofu apply -auto-approve

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
tofu state list

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Vérifie

Astuce

Quelle commande change quelque chose, et laquelle dit seulement ce qu’elle changerait ? Réponse : tofu apply change, tofu plan informe seulement. Que dit le plan si tu le relances tout de suite ? Réponse : No changes. Your infrastructure matches the configuration., parce que l’état contient déjà ce que décrit le fichier. Essaie.

Une erreur fréquente

Attention

Beaucoup pensent qu’OpenTofu regarde le monde réel à chaque fois pour savoir ce qui existe. Ce n’est pas le cas : il compare tes fichiers avec son état, sa propre mémoire. Ce que l’état dit exister est ce qu’il croit exister : l’état vaut donc autant que l’infrastructure qu’il décrit.

Changer une valeur et lire le plan

La commande suivante remplace "hello" par "goodbye" dans le fichier avec sed, un chercher-remplacer. Puis tofu plan doit faire la différence entre une chose nouvelle et une chose modifiée. Un ~ veut dire modifier sur place, l’ancienne et la nouvelle valeur sont montrées côte à côte, et la dernière ligne dit Plan: 0 to add, 1 to change, 0 to destroy. Tu lis le plan avant d’appliquer : c’est l’habitude pour laquelle cet outil existe.

Commande
sed -i 's/input = "hello"/input = "goodbye"/' main.tf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
tofu plan

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

L’état est un fichier, et sans lui OpenTofu oublie

Dans ce dossier, l’état est un simple fichier, terraform.tfstate. Supprime-le et OpenTofu a perdu sa mémoire. Le plan dit alors 1 to add, pour une ressource qu’il a déjà créée, parce que, pour lui, rien n’existe. Avec un vrai cloud, cela créerait une deuxième copie de tout. C’est pourquoi les vraies équipes gardent l’état en lieu sûr et ne le modifient jamais à la main. Ensuite, sudo tofulab reset hello remet ce dossier comme il était fourni.

Commande
rm terraform.tfstate

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
tofu plan

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Vérification finale

Astuce

Réponds sans regarder en arrière. 1. Que change tofu plan ? 2. Que note l’état ? 3. Que dit le plan si tu le lances une deuxième fois après un apply ? 4. Pourquoi cette machine ne peut-elle pas créer un vrai serveur ? Réponses : rien ; ce qu’OpenTofu a déjà construit ; rien à faire ; elle n’a pas de provider, et un provider est ce qui parle à un cloud. Quand tu es prêt, lis ton lab : lance cat ~/README.md dans le terminal.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon donnée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie de chaque élève. Elle se déroule dans un lab VM : chaque élève a sa propre machine Ubuntu avec OpenTofu installé, et un bouton Exécuter tape dans son terminal et montre ce qui s’est affiché. Il faut un compte gratuit (la machine télécharge OpenTofu depuis GitHub). Points clés : 1. Un plan montre les changements avant qu’ils soient faits. 2. L’état est la mémoire d’OpenTofu de ce qu’il a construit. 3. Le même fichier peut être appliqué de nouveau sans rien changer. Erreur fréquente : croire qu’OpenTofu regarde le monde réel au lieu de son état. Le lab n’utilise que la ressource intégrée terraform_data, donc rien de réel n’est créé ; les vrais providers demandent un réseau que le lab n’a pas. Après la leçon, sudo tofulab reset hello remet le dossier en état. Le lab lui-même a une vérification qui planifie et applique le projet de l’élève avec ses propres valeurs. Copiez la leçon dans votre propre module pour la modifier, ou construisez-en une de zéro avec le menu Lab du générateur de leçons.

À propos de ce labo et de sa source: Lab OpenTofu : l’infrastructure en code, avec plan, apply et état, dans une VM

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.