Introduction
Terraform est un outil puissant pour construire, modifier et versionner des infrastructures de manière sûre et efficace. Une fonctionnalité clé qui rend les configurations Terraform flexibles et réutilisables est l'utilisation de variables d'entrée (input variables). Les variables vous permettent de paramétrer vos configurations, évitant ainsi de coder en dur des valeurs et facilitant la personnalisation des déploiements sans modifier le code source.
Dans ce laboratoire, vous apprendrez les bases de l'utilisation des variables Terraform. Vous créerez une configuration simple qui génère un fichier local. Le nom et le contenu de ce fichier seront déterminés par des variables que vous définirez et passerez lors de l'exécution de vos commandes Terraform.
À la fin de ce laboratoire, vous comprendrez :
- Comment déclarer des variables dans un fichier
.tf. - Comment référencer des variables au sein d'un bloc de ressource (resource block).
- Comment fournir des valeurs pour vos variables lors de l'exécution de
terraform apply.
Créer le fichier variables.tf pour les définitions de variables
Dans cette étape, vous allez créer un fichier dédié pour contenir vos déclarations de variables. Bien que vous puissiez déclarer des variables dans n'importe quel fichier .tf, il est de coutume de les placer dans un fichier nommé variables.tf. Cette pratique aide à organiser votre projet et permet aux autres de comprendre facilement quelles valeurs d'entrée votre configuration attend.
Tout votre travail se déroulera dans le répertoire ~/project. Commencez par créer le fichier variables.tf à l'aide de la commande touch.
touch variables.tf
Vous pouvez vérifier que le fichier a été créé en listant le contenu du répertoire :
ls
Vous devriez voir variables.tf dans la sortie.
variables.tf
Pour l'instant, ce fichier est vide. Dans les étapes suivantes, vous y ajouterez des définitions de variables.
Définir une variable de type chaîne pour le nom de fichier
Dans cette étape, vous allez définir votre première variable. Cette variable sera utilisée pour spécifier le nom du fichier que Terraform va créer.
Les variables sont déclarées à l'aide d'un bloc variable. Chaque bloc définit une seule variable d'entrée. Définissons une variable nommée filename.
Ouvrez le fichier variables.tf que vous avez créé à l'étape précédente à l'aide de l'éditeur nano.
nano variables.tf
Maintenant, ajoutez le code suivant au fichier. Ce code déclare une variable nommée filename, spécifie son type comme étant string (chaîne de caractères), et inclut une description utile.
variable "filename" {
description = "The name of the file to create."
type = string
}
variable "filename": Ceci démarre la déclaration d'une variable nomméefilename.description: Cet argument optionnel fournit une description lisible par l'homme de l'objectif de la variable.type: Cet argument spécifie le type de données pour la variable. Ici, nous utilisonsstringpour indiquer qu'elle acceptera des valeurs textuelles.
Après avoir ajouté le code, enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, suivi de Y, puis de Enter.
Définir une variable de type chaîne pour le contenu
Dans cette étape, vous allez définir une deuxième variable pour contenir le contenu qui sera écrit dans le fichier. Cela suit le même modèle que l'étape précédente.
Ouvrez à nouveau le fichier variables.tf avec nano.
nano variables.tf
Ajoutez le bloc variable suivant sous la définition de la variable filename que vous avez ajoutée précédemment.
variable "content" {
description = "The content to write into the file."
type = string
}
Votre fichier variables.tf complet devrait maintenant ressembler à ceci :
variable "filename" {
description = "The name of the file to create."
type = string
}
variable "content" {
description = "The content to write into the file."
type = string
}
Ceci définit deux paramètres d'entrée pour votre configuration Terraform : un pour le nom du fichier et un pour son contenu.
Enregistrez le fichier et quittez nano (Ctrl+X, Y, Enter).
Référencer les variables dans le bloc de ressource local_file
Dans cette étape, vous allez créer le fichier de configuration Terraform principal, main.tf, et utiliser les variables que vous venez de définir. Vous utiliserez la ressource local_file, qui fait partie du fournisseur (provider) hashicorp/local, pour créer un fichier sur le système de fichiers local.
Tout d'abord, créez un nouveau fichier nommé main.tf.
nano main.tf
Maintenant, ajoutez la configuration suivante au fichier main.tf.
terraform {
required_providers {
local = {
source = "hashicorp/local"
version = "2.4.0"
}
}
}
resource "local_file" "my_file" {
filename = var.filename
content = var.content
}
Décortiquons cette configuration :
terraform { ... }: Ce bloc configure les paramètres de Terraform, y compris les fournisseurs requis (required providers). Nous indiquons à Terraform que notre configuration a besoin du fournisseurlocal.resource "local_file" "my_file": Ceci définit une ressource de typelocal_fileet lui donne un nom localmy_file.filename = var.filename: C'est ici que vous référencez une variable. Le préfixevar.suivi du nom de la variable (filename) indique à Terraform d'utiliser la valeur de la variablefilenamepour cet argument.content = var.content: De même, ceci assigne la valeur de la variablecontentà l'argumentcontentde la ressource.
Après avoir ajouté le code, enregistrez le fichier et quittez nano (Ctrl+X, Y, Enter).
Exécuter terraform apply avec les valeurs des variables
Dans cette étape finale, vous allez exécuter votre configuration Terraform et fournir des valeurs pour vos variables.
Premièrement, vous devez initialiser le répertoire de travail (working directory) Terraform. La commande terraform init télécharge et installe les fournisseurs définis dans la configuration (dans notre cas, le fournisseur local).
Exécutez la commande suivante :
terraform init
Vous devriez voir une sortie indiquant que Terraform a été initialisé avec succès.
Initializing the backend...
Initializing provider plugins...
- Finding hashicorp/local versions matching "2.4.0"...
- Installing hashicorp/local v2.4.0...
- Installed hashicorp/local v2.4.0 (signed by HashiCorp)
Terraform has been successfully initialized!
...
Maintenant, vous pouvez appliquer la configuration. Pour passer des valeurs à vos variables, vous pouvez utiliser l'indicateur (flag) de ligne de commande -var. Nous utiliserons également l'indicateur -auto-approve pour sauter l'invite de confirmation interactive.
Exécutez la commande terraform apply avec des valeurs pour filename et content :
terraform apply -var="filename=hello.txt" -var="content=Hello, Terraform Variables." -auto-approve
Terraform va maintenant exécuter le plan et créer le fichier. La sortie ressemblera à ceci :
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
## local_file.my_file will be created
+ resource "local_file" "my_file" {
+ content = "Hello, Terraform Variables."
+ directory_permission = "0777"
+ file_permission = "0777"
+ filename = "hello.txt"
+ id = "..."
}
Plan: 1 to add, 0 to change, 0 to destroy.
local_file.my_file: Creating...
local_file.my_file: Creation complete after 0s [id=...]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Pour vérifier que tout a fonctionné, utilisez la commande cat pour afficher le contenu du fichier nouvellement créé.
cat hello.txt
Vous devriez voir le contenu que vous avez fourni dans la variable :
Hello, Terraform Variables.
Félicitations ! Vous avez réussi à utiliser les variables Terraform pour créer un fichier.
Résumé
Dans ce laboratoire, vous avez appris le flux de travail fondamental pour utiliser les variables dans Terraform. Vous avez réussi à paramétrer une configuration, la rendant plus dynamique et réutilisable.
Vous avez appris à :
- Organiser les déclarations de variables dans un fichier dédié
variables.tf. - Déclarer des variables en utilisant le bloc
variable, en spécifiant leurtypeet leurdescription. - Référencer des variables dans les blocs de ressources en utilisant la syntaxe
var.<nom_de_la_variable>. - Initialiser un projet Terraform avec
terraform initpour télécharger les fournisseurs nécessaires. - Fournir des valeurs de variables à l'exécution (runtime) en utilisant l'indicateur
-varavec la commandeterraform apply.
Cette connaissance est un élément fondamental pour créer une infrastructure en tant que code (Infrastructure as Code) plus complexe et modulaire avec Terraform.



