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

OpenTofu : plan, apply et fichier d’état

Après cette leçon: Je peux lancer un plan puis un apply avec OpenTofu et dire ce que contient le fichier d’état.

Leçon de 55 min9 commandesLab OpenTofu : l’infrastructure en code, avec plan, apply et état, dans une VM

Dix salles de TP, une seule description

L’infrastructure as code consiste à décrire dans des fichiers ce qui doit exister, puis à laisser un outil le construire. OpenTofu est l’un de ces outils : il montre un plan avant de rien changer, puis il applique.

Une université veut les mêmes dix salles de TP à chaque rentrée. Les refaire à la main donne dix salles un peu différentes. Un fichier relu, versionné et rejoué donne dix fois la même salle.

À la fin de cette leçon

Remarque

Je peux lancer un plan puis un apply avec OpenTofu et dire ce que contient le fichier d’état.

Mots-clés

MotCe que ça veut direExemple
Infrastructure as codedécrire ce qui doit exister dans des fichiers
Ressourceune chose que le fichier décritterraform_data
Planla liste des changements que l’outil ferait, montrée avant de les fairetofu plan
Applyfaire les changements que le plan a listéstofu apply
Étatle fichier où l’outil note ce qu’il a déjà construitterraform.tfstate
Fournisseurun module qui parle à un vrai cloudprovider

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un fichier décrit l’état souhaité

Avec OpenTofu, vous n’écrivez pas « crée ce serveur ». Vous écrivez « il doit y avoir ce serveur ». C’est l’état souhaité : ce que vous voulez voir exister à la fin.

Le fichier main.tf est écrit en HCL, un langage fait pour cela. Un bloc resource décrit une ressource. Un bloc output affiche une valeur à la fin.

Ce que le labo fait vraiment

Important

Ce labo ne peut télécharger aucun fournisseur, donc il ne crée aucun vrai serveur. Il utilise une seule ressource, terraform_data, qui mémorise une valeur et la rend. Le plan, l’apply et l’état sont les vrais : seule la dernière étape diffère d’un vrai cloud.

Le plus petit projet possible

Code: bash
resource "terraform_data" "salle" {
  input = "salle de sport"
}

output "nom" {
  value = terraform_data.salle.output
}

Créer un dossier pour le projet

Commande
mkdir -p ~/atelier-iac/club

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.

Aller dans ce dossier

Commande
cd ~/atelier-iac/club

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.

Écrire main.tf

Commande
printf 'resource "terraform_data" "salle" {\n  input = "salle de sport"\n}\n\noutput "nom" {\n  value = terraform_data.salle.output\n}\n' > 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.

Le plan compare le souhait à l’état

tofu init prépare le dossier. Un vrai projet y télécharge ses fournisseurs. Ici il n’y en a aucun, donc l’étape est instantanée.

tofu plan compare ensuite le fichier à l’état. Il liste les changements, avec + pour créer, et finit par une ligne de total. Un plan ne change rien : il informe.

Préparer le dossier

Commande
tofu init -no-color | grep successfully

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.

Lire la dernière ligne du plan

Commande
tofu plan -no-color | grep ^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 fait le travail, et l’état s’en souvient

tofu apply fait les changements du plan. Sans -auto-approve, il demande de taper yes avant. Le bouton Run envoie l’option pour vous.

Ensuite, OpenTofu note ce qu’il a construit dans terraform.tfstate, un fichier JSON. C’est l’état. Au plan suivant, il compare votre fichier à cet état, pas au monde.

Appliquer le plan

Commande
tofu apply -auto-approve -no-color | grep ^Apply

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.

Lister ce que l’état contient

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.

Lire la valeur dans le fichier d’état

Commande
jq -r '.resources[0].instances[0].attributes.input.value' 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.

Replanifier tout de suite

Commande
tofu plan -no-color | grep "No changes"

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.

Erreur fréquente

Attention

Beaucoup de gens pensent que tofu plan crée déjà la ressource. Il ne fait que comparer et afficher : le fichier d’état n’existe qu’après un apply. Retenez : le plan montre ce qui se passerait, l’apply le fait.

Pour aller plus loin

Ajoutez une seconde ressource terraform_data à main.tf, puis lancez tofu plan. Quel total lisez-vous, et pourquoi la première ressource n’y figure-t-elle pas ?

Changez ensuite la valeur de input dans la première, relancez le plan et lisez le symbole devant la ressource. Dites si l’état a changé avant l’apply.

À 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 ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.