Création de Ressource de Base avec Terraform

LinuxBeginner
Pratiquer maintenant

Introduction

Terraform est un outil d'Infrastructure as Code (IaC) open-source créé par HashiCorp. Il vous permet de définir et de provisionner l'infrastructure de votre centre de données en utilisant un langage de configuration déclaratif. Cela signifie que vous décrivez l'infrastructure souhaitée dans des fichiers de configuration, et Terraform détermine comment créer, mettre à jour ou supprimer les ressources pour correspondre à cet état.

Le flux de travail (workflow) principal de Terraform se compose de trois étapes principales :

  1. Écrire (Write) : Rédiger l'infrastructure en tant que code.
  2. Planifier (Plan) : Prévisualiser les changements avant de les appliquer.
  3. Appliquer (Apply) : Provisionner et gérer votre infrastructure.

Dans ce laboratoire, vous parcourrez ce flux de travail complet en créant une ressource très simple : un fichier local. L'utilisation du fournisseur (provider) local est un excellent moyen d'apprendre les mécanismes de Terraform sans avoir besoin d'identifiants pour un fournisseur de cloud. Vous définirez un fichier, planifierez sa création, appliquerez les changements et vérifierez le résultat.

Définir une ressource local_file dans main.tf

À cette étape, vous commencerez par définir une ressource dans votre fichier de configuration Terraform. Toutes les configurations Terraform sont écrites dans des fichiers se terminant par l'extension .tf. Le fichier de configuration principal est couramment nommé main.tf.

Un bloc resource est la syntaxe principale pour déclarer un objet d'infrastructure. Il définit une ressource d'un type donné (par exemple, local_file) avec un nom local donné (par exemple, example). La combinaison du type et du nom doit être unique au sein d'un module.

Tout d'abord, ouvrez le fichier main.tf dans votre répertoire ~/project en utilisant l'éditeur de texte nano.

nano main.tf

Maintenant, ajoutez le code suivant au fichier. Ceci définit une ressource de type local_file et lui donne le nom local example. Pour l'instant, le bloc de ressource est vide.

resource "local_file" "example" {
}

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

Spécifier le nom de fichier et le contenu dans le bloc de ressource

À cette étape, vous allez ajouter des arguments au bloc de ressource pour spécifier les propriétés du fichier que vous souhaitez créer. Les arguments sont les paires clé-valeur à l'intérieur d'un bloc de ressource qui définissent sa configuration. Pour une ressource local_file, les deux arguments les plus importants sont filename et content.

  • filename : Le chemin vers le fichier qui sera créé.
  • content : Le contenu qui sera écrit dans le fichier.

Ouvrez à nouveau le fichier main.tf avec nano.

nano main.tf

Modifiez le bloc de ressource local_file pour inclure les arguments filename et content comme indiqué ci-dessous.

resource "local_file" "example" {
  content  = "Hello, Terraform!"
  filename = "${path.module}/hello.txt"
}

Ici, nous indiquons à Terraform de créer un fichier nommé hello.txt dans le répertoire de projet actuel. ${path.module} est une expression Terraform spéciale qui se résout au chemin du module courant, qui dans ce cas est ~/project. Le contenu du fichier sera la chaîne de caractères "Hello, Terraform!".

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

Initialiser Terraform et Prévisualiser les Changements

À cette étape, vous allez d'abord initialiser votre projet Terraform, puis exécuter la commande terraform plan pour créer un plan d'exécution.

Avant de pouvoir planifier des changements, vous devez initialiser le projet. La commande terraform init analyse votre configuration, télécharge les fournisseurs requis (dans ce cas, pour local_file), et configure le backend.

Dans votre terminal, exécutez d'abord terraform init :

terraform init

Une fois l'initialisation réussie, exécutez terraform plan. Cette commande est une partie cruciale du flux de travail Terraform car elle fournit une "simulation" des changements. Elle vous montre ce que Terraform va faire à votre infrastructure sans appliquer réellement de modifications. Cela vous permet de réviser et de vérifier les actions prévues avant qu'elles ne soient appliquées.

terraform plan

Terraform lira votre fichier de configuration et le comparera à l'état actuel de votre infrastructure (qui est actuellement vide). Il affichera ensuite un plan d'action. Vous devriez voir une sortie similaire à ce qui suit, indiquant qu'une ressource va être créée.

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              = "Hello, 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             = "./hello.txt"
      + id                   = (known after apply)
    }

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

Le symbole + à côté de resource "local_file" "example" signifie que cette ressource va être créée. La sortie détaille tous les attributs qui seront définis sur le nouveau fichier.

Exécuter terraform apply pour créer la ressource

À cette étape, vous allez appliquer les changements en utilisant la commande terraform apply pour créer effectivement le fichier. Cette commande exécute les actions proposées dans la sortie de terraform plan.

Par défaut, terraform apply vous montrera à nouveau le plan et demandera une confirmation interactive avant de continuer. Pour le rendre non interactif, ce qui est utile pour les laboratoires et l'automatisation, vous pouvez utiliser l'option -auto-approve.

Exécutez la commande suivante dans votre terminal :

terraform apply -auto-approve

Terraform va maintenant exécuter le plan. La sortie affichera d'abord à nouveau le plan, suivi de la progression de l'application. Une fois terminé, vous verrez un message de confirmation.

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              = "Hello, 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             = "./hello.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.
local_file.example: Creating...
local_file.example: Creation complete after 0s [id=42086c02e03bf671ddf621ed9922f52f2c7a605c]

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

Le message "Apply complete!" confirme que Terraform a créé avec succès la ressource telle que définie dans votre configuration.

Vérifier l'existence du fichier dans le système de fichiers

Dans cette dernière étape, vous allez vérifier que Terraform a bien créé le fichier sur votre système de fichiers local comme spécifié. Puisque vous avez utilisé la ressource local_file, le résultat est un fichier tangible dans votre répertoire de projet.

Premièrement, utilisez la commande ls pour lister les fichiers dans le répertoire courant. Vous devriez maintenant voir hello.txt à côté de votre fichier de configuration Terraform.

ls

Sortie attendue :

hello.txt  main.tf  terraform.tfstate

Ensuite, utilisez la commande cat pour afficher le contenu du fichier hello.txt nouvellement créé.

cat hello.txt

Vous devriez voir le contenu que vous avez défini dans main.tf.

Hello, Terraform!

Ceci confirme que votre configuration Terraform a été appliquée avec succès et que la ressource a été créée exactement comme vous l'avez définie dans votre code.

Résumé

Félicitations ! Vous avez terminé avec succès votre premier projet Terraform.

Dans ce laboratoire, vous avez appris le flux de travail fondamental de Terraform :

  1. Écrire (Write) : Vous avez défini une ressource local_file dans un fichier de configuration main.tf.
  2. Planifier (Plan) : Vous avez utilisé terraform plan pour prévisualiser la création du fichier sans effectuer de changements.
  3. Appliquer (Apply) : Vous avez utilisé terraform apply pour exécuter le plan et créer le fichier sur votre système de fichiers local.

Ce simple exemple de création d'un fichier local démontre la puissance fondamentale de l'Infrastructure as Code (IaC). Vous avez déclaré l'état souhaité d'une ressource dans un fichier de configuration, et Terraform a géré la logique pour atteindre cet état. Les mêmes principes s'appliquent lors de la gestion d'infrastructures plus complexes, telles que les machines virtuelles, les réseaux et les bases de données dans le cloud.