Configuration et scripts Terraform

Effectué

Dans cette unité, nous examinons la configuration et les scripts Terraform.

Pourquoi Terraform ?

En tant que gestionnaire d’infrastructures, vous avez besoin d’un outil pour approvisionner et gérer l’infrastructure Azure. Vous aimeriez aussi utiliser une infrastructure en tant que code dans des fichiers de configuration qui décrivent la topologie de vos ressources Azure.

HashiCorp Terraform convient parfaitement pour déployer l’infrastructure sur les fournisseurs de cloud. Il offre aux développeurs des outils cohérents pour gérer chaque définition d’infrastructure.

Automatiser la gestion de l’infrastructure

En utilisant des fichiers de configuration Terraform basés sur des modèles, vous pouvez définir, approvisionner et configurer des ressources Azure de manière reproductible et prévisible. Cette automation présente plusieurs avantages :

  • Elle réduit le risque d’erreur humaine lors du déploiement et de la gestion de l’infrastructure.
  • Elle déploie le même modèle plusieurs fois pour créer des environnements de développement, de test et de production identiques.
  • Elle réduit le coût des environnements de développement et de test en les créant à la demande.

Comprendre les modifications apportées à l’infrastructure avant qu’elles ne soient appliquées

À mesure qu’une topologie de ressources devient complexe, il peut être difficile de comprendre la signification et l’effet des modifications apportées à l’infrastructure.

L’utilisation de Terraform permet de valider et d’afficher un aperçu des modifications apportées à l’infrastructure avant de les appliquer. Les membres de l’équipe peuvent collaborer plus efficacement en comprenant les modifications proposées et leurs effets au début du processus de développement.

Fichiers config de Terraform

Les fichiers config génèrent un plan d’exécution et son action pour atteindre l’état souhaité. Terraform peut ensuite générer l’infrastructure décrite. À mesure que la configuration change, Terraform peut déterminer ce qui a changé et créer des plans d’exécution incrémentiels.

Les fichiers config Terraform utilisent leur propre langage de configuration, similaire à YAML et conçu pour autoriser une description de l’infrastructure.

Vous créez des fichiers config avec la syntaxe HCL (HashiCorp Configuration Language). HCL est déclaratif, il décrit un objectif prévu plutôt que les étapes pour l’atteindre. La syntaxe HCL vous permet de spécifier le fournisseur de cloud, tel qu’Azure, et les éléments qui composent votre infrastructure cloud.

Les fichiers config sont stockés dans des fichiers en texte brut avec une extension de fichier .tf. Il s'agit de :

  • main.tf (obligatoire) : définit la structure principale pour déployer l’infrastructure complète, directement ou par le biais d’appels, sur des modules
  • outputs.tf : identifie chaque valeur retournée d’un module Terraform
  • variables.tf : définit les variables dans main.tf, qu’elles soient obligatoires ou non

Capture d’écran de la structure de configuration Terraform.

Modules

Vous pouvez regrouper les ressources Terraform dans un module, ce qui crée une unité de configuration plus grande. Les modules sont des ensembles de fichiers config dans un seul répertoire. Une configuration simple est composée d’un seul répertoire avec un ou plusieurs fichiers .tf.

Les modules offrent de nombreux avantages. Par exemple, les modules :

  • aident à organiser votre projet,
  • encapsulent la complexité,
  • vous permettent de réutiliser des tâches courantes,
  • fournissent une cohérence et garantissent de suivre les meilleures pratiques.

Le fichier main.tf

Votre fichier main.tf contient le principal ensemble de détails de configurations de votre module. Ce fichier est souvent appelé plan Terraform. Votre plan Terraform spécifie les ressources d’infrastructure dont vous avez besoin. Vous pouvez nommer ce fichier comme vous voulez, mais il est souvent appelé main.tf.

Workflow Terraform

Terraform recommande l’utilisation de son workflow « initialiser, planifier et appliquer » de base pour l’automatisation. Ce workflow exécute toutes les actions CI/CD de Terraform sur toutes les demandes de tirage (pull request) Git, que celles-ci soient nouvelles ou mises à jour.

Diagramme du workflow Terraform, affichant les actions principales d’initialisation, de planification et d’application.

Les principales actions de ce workflow sont les suivantes :

  • Initialiser (init) : initialiser un répertoire de travail avec des fichiers config Terraform
  • Planifier (plan) : produire un plan pour modifier les ressources afin qu’elles correspondent à la configuration actuelle
  • Appliquer (apply) : appliquer les modifications décrites par le plan

État

L’état permet à Terraform de savoir quelles ressources Azure ajouter, mettre à jour ou supprimer.

Terraform utilise l’état pour créer des plans et apporter des modifications à votre infrastructure. Avant toute opération, Terraform procède à une actualisation pour mettre à jour l’état avec la vraie infrastructure.

L’état est stocké par défaut dans un fichier texte local appelé terraform.tfstate. Terraform gère ce fichier en utilisant les actions du workflow que vous définissez dans vos modules.

Vous pouvez aussi stocker l’état à distance, ce qui fonctionne mieux dans un environnement d’équipe. Pour plus d’informations sur la gestion à distance de l’état, consultez l’unité Résumé à la fin de ce module.

Étapes suivantes

Dans l’unité suivante, nous verrons comment utiliser Terraform avec GitHub Actions ou Azure Pipelines pour provisionner et déployer vos applications.