Utilisation des Variables Terraform

LinuxBeginner
Pratiquer maintenant

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ée filename.
  • 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 utilisons string pour 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 fournisseur local.
  • resource "local_file" "my_file": Ceci définit une ressource de type local_file et lui donne un nom local my_file.
  • filename = var.filename: C'est ici que vous référencez une variable. Le préfixe var. suivi du nom de la variable (filename) indique à Terraform d'utiliser la valeur de la variable filename pour cet argument.
  • content = var.content: De même, ceci assigne la valeur de la variable content à l'argument content de 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 leur type et leur description.
  • 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 init pour télécharger les fournisseurs nécessaires.
  • Fournir des valeurs de variables à l'exécution (runtime) en utilisant l'indicateur -var avec la commande terraform 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.