Gestion des Sorties (Outputs) Terraform

LinuxBeginner
Pratiquer maintenant

Introduction

Dans Terraform, les valeurs de sortie (output values) sont un moyen d'exposer des données significatives sur vos ressources après leur déploiement. Elles s'apparentent aux valeurs de retour d'un module Terraform et peuvent être utilisées pour interroger facilement des informations telles que l'adresse IP d'un serveur, une chaîne de connexion à une base de données ou le chemin d'un fichier. Cela rend l'information facilement accessible depuis la ligne de commande et permet à d'autres configurations Terraform de l'utiliser.

Dans ce laboratoire, vous apprendrez à définir, appliquer et visualiser les valeurs de sortie. Nous commencerons par une configuration Terraform de base qui crée un fichier local, puis nous ajouterons un bloc de sortie (output block) pour exposer le chemin de ce fichier.

Créer le fichier outputs.tf pour les définitions de sortie

Dans cette étape, nous allons créer un fichier dédié à nos définitions de sortie. Bien que vous puissiez placer les blocs de sortie (output blocks) dans n'importe quel fichier .tf, il est de coutume et considéré comme une bonne pratique de les placer dans un fichier séparé nommé outputs.tf. Cela permet de garder votre configuration organisée et facilite la recherche de toutes les sorties pour votre projet.

Tout votre travail se déroulera dans le répertoire ~/project, qui est le répertoire par défaut dans votre terminal.

Tout d'abord, vérifions le fichier main.tf qui a été pré-créé pour vous.

ls -l

Vous devriez voir le fichier main.tf et un répertoire .terraform.

total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf

Maintenant, créez le fichier outputs.tf en utilisant la commande touch.

touch outputs.tf

Cette commande crée un fichier vide nommé outputs.tf dans le répertoire courant. Vous pouvez vérifier sa création en listant à nouveau les fichiers.

ls -l

Vous verrez maintenant outputs.tf dans la liste des fichiers.

total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf
-rw-rw-r-- 1 labex labex   0 Oct 15 12:39 outputs.tf

Définir la sortie pour le nom de fichier local_file

Dans cette étape, vous allez définir un bloc de sortie (output block) dans le fichier outputs.tf. Un bloc de sortie déclare une seule valeur de sortie pour votre configuration Terraform.

La syntaxe de base pour un bloc de sortie est la suivante :

output "NAME" {
  ## Les arguments vont ici
}

Ici, NAME est une chaîne de caractères qui fournit un nom pour la sortie, que vous utiliserez plus tard pour interroger sa valeur.

Ouvrons le fichier outputs.tf avec l'éditeur nano et ajoutons notre premier bloc de sortie.

nano outputs.tf

Ajoutez maintenant le code suivant au fichier. Nous nommerons notre sortie file_path.

output "file_path" {

}

Après avoir ajouté le code, enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, puis Y, et enfin Enter.

Ce bloc n'est pas très utile pour l'instant, car il lui manque l'argument value. Nous l'ajouterons à l'étape suivante.

Référencer l'attribut de ressource dans le bloc de sortie

Dans cette étape, nous allons rendre notre sortie utile en lui indiquant quelle valeur afficher. Ceci est réalisé en utilisant l'argument value à l'intérieur du bloc de sortie (output block). La valeur est typiquement une référence à un attribut d'une ressource définie dans votre configuration.

La syntaxe pour référencer un attribut de ressource est <RESOURCE_TYPE>.<RESOURCE_NAME>.<ATTRIBUTE>.

Dans notre fichier main.tf, nous avons une ressource définie comme suit :

resource "local_file" "example" {
  ## ...
}

La ressource local_file possède un attribut appelé filename, qui contient le chemin d'accès au fichier qu'elle gère. Pour référencer cet attribut, nous utilisons local_file.example.filename.

Ajoutons cette référence à notre bloc de sortie. Ouvrez à nouveau outputs.tf avec nano.

nano outputs.tf

Modifiez le fichier pour inclure l'argument value comme indiqué ci-dessous :

output "file_path" {
  value = local_file.example.filename
}

Ceci indique à Terraform que la sortie file_path doit avoir la valeur de l'attribut filename de la ressource local_file nommée example.

Enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, Y, et Enter.

Exécuter terraform apply pour mettre à jour la configuration

Dans cette étape, vous allez appliquer les changements de configuration. Chaque fois que vous ajoutez, supprimez ou modifiez des sorties (outputs), vous devez exécuter terraform apply pour que Terraform reconnaisse les changements et mette à jour le fichier d'état (state file). Le fichier d'état est l'endroit où Terraform stocke les valeurs de vos sorties.

Exécutez la commande terraform apply dans votre terminal.

terraform apply

Terraform vous montrera d'abord un plan d'exécution. Il détectera que vous avez ajouté une sortie et planifiera son ajout. Étant donné que la ressource local_file n'existe pas encore, il planifiera également sa création.

Il vous sera demandé de confirmer l'action. Tapez yes et appuyez sur Enter.

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.example will be created
  + resource "local_file" "example" {
      + content              = "This is an example file managed by Terraform."
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "./example.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + file_path = "./example.txt"

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

local_file.example: Creating...
local_file.example: Creation complete after 0s [id=ec3adcab998872def2df6200fb03992ac6f237a4]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

file_path = "./example.txt"

Comme vous pouvez le voir dans la sortie, l'application a réussi et Terraform affiche maintenant la sortie file_path avec sa valeur.

Exécuter terraform output pour visualiser le nom de fichier

Dans cette étape, vous utiliserez la commande terraform output pour visualiser les valeurs de sortie (output values) stockées dans votre fichier d'état (state file). Ceci est utile pour récupérer des informations sur votre infrastructure sans avoir à analyser manuellement le fichier d'état ou à réexécuter terraform apply.

Pour voir toutes les sorties définies dans votre configuration, exécutez simplement la commande sans aucun argument.

terraform output

Ceci affichera toutes les sorties dans un format lisible par l'homme.

file_path = "./example.txt"

Vous pouvez également interroger une valeur de sortie spécifique en fournissant son nom comme argument. Ceci est utile dans les scripts ou lorsque vous n'avez besoin que d'une seule information.

terraform output file_path

Cette commande affichera uniquement la valeur brute (raw value) de la sortie spécifiée.

"./example.txt"

Cela facilite l'utilisation de la sortie dans des scripts shell, par exemple, en l'assignant à une variable : FILE=$(terraform output -raw file_path). L'option -raw supprime les guillemets.

Résumé

Félicitations pour avoir terminé ce laboratoire (lab) !

Dans ce laboratoire, vous avez appris les bases de la gestion des sorties (outputs) dans Terraform. Vous avez réussi à :

  • Organiser votre configuration en créant un fichier dédié outputs.tf.
  • Définir un bloc output pour déclarer une valeur de sortie.
  • Référencer un attribut de ressource au sein d'un bloc de sortie pour en exposer la valeur.
  • Appliquer la configuration en utilisant terraform apply pour rendre la sortie disponible.
  • Interroger la valeur de sortie depuis la ligne de commande en utilisant terraform output.

Les sorties Terraform sont une fonctionnalité puissante pour extraire des informations importantes de votre infrastructure et intégrer vos flux de travail Terraform avec d'autres outils et scripts.