Aller au contenu

Commandes de base

·
terraform
Jérémy Norgol
Auteur
Jérémy Norgol
Consultant ingénieur Linux Devops

Initialisation du répertoire ➕
#

L’initialisation d’un répertoire de configuration télécharge et installe les fournisseurs définis dans la configuration, dans ce cas le fournisseur aws.

Terraform télécharge le fournisseur présent et l’installe dans un sous-répertoire caché de votre répertoire de travail actuel, nommé .terraform. La commande terraform init affiche la version du fournisseur installée. Terraform crée également un fichier de verrouillage nommé .terraform.lock.hcl qui spécifie les versions exactes des fournisseurs utilisées, afin que vous puissiez contrôler quand vous souhaitez mettre à jour les fournisseurs utilisés pour votre projet.

Pour initialiser le répertoire, exécutez la commande suivante :

terraform init

Cela téléchargera et installera les fournisseurs nécessaires et créera le fichier de verrouillage .terraform.lock.hcl.

Formatage et validation ✅
#

Pour formater et valider la configuration Terraform, vous pouvez suivre ces étapes :

  1. Pour formater votre configuration, exécutez la commande suivante :

terraform fmt

Cela mettra à jour automatiquement les fichiers de configuration dans le répertoire actuel pour les rendre plus lisibles et cohérents. Terraform affichera les noms des fichiers modifiés, le cas échéant. Si votre fichier de configuration était déjà correctement formaté, Terraform ne renverra aucun nom de fichier.

  1. Pour valider votre configuration syntaxiquement et vérifier sa cohérence interne, utilisez la commande suivante :

terraform validate

Dans l’exemple de configuration que vous avez fourni, Terraform renverra un message de réussite si la configuration est valide.

Ces étapes vous permettront de formater et de valider votre configuration Terraform pour assurer une cohérence et une conformité.

Appliquer la configuration 🔧
#

Pour créer votre infrastructure en utilisant Terraform, vous pouvez suivre ces étapes :

  1. Exécutez la commande suivante pour appliquer la configuration :

terraform apply

Terraform affichera un plan d’exécution qui décrit les actions qu’il va entreprendre pour modifier votre infrastructure afin qu’elle corresponde à la configuration. Le format de sortie est similaire au format diff généré par des outils tels que Git. Le plan d’exécution indiquera les ressources qui seront créées, modifiées ou supprimées.

Inspecter l’infra actuel 🔍
#

Pour inspecter l’état actuel de votre configuration Terraform, vous pouvez utiliser la commande suivante :

terraform show

Cette commande affichera les détails des ressources gérées par Terraform, tels que l’ID, les propriétés et les métadonnées des ressources. Vous pourrez voir les informations concernant l’instance créée, qui ont été stockées dans le fichier d’état terraform.tfstate.

Veuillez noter que le fichier d’état est essentiel pour que Terraform puisse suivre les ressources qu’il gère, il est donc important de le stocker de manière sécurisée et de limiter l’accès à des membres de confiance de votre équipe. En production, il est recommandé de stocker votre fichier d’état de manière distante avec Terraform Cloud ou Terraform Enterprise. Terraform prend également en charge plusieurs autres backends distants que vous pouvez utiliser pour stocker et gérer votre état.

En inspectant l’état, vous pourrez voir les métadonnées de la ressource EC2 créée et les utiliser ultérieurement dans votre configuration Terraform pour configurer d’autres ressources ou afficher des valeurs en sortie.

Point d’attention! Assurez-vous de traiter les informations contenues dans le fichier d’état terraform.state avec précaution, car elles peuvent contenir des informations sensibles sur votre infrastructure.

Liste des ressources 📑
#

Pour gérer manuellement l’état de votre projet Terraform, vous pouvez utiliser la commande terraform state. Utilisez la sous-commande list pour obtenir la liste des ressources dans l’état de votre projet.

terraform state list

Cela affichera la liste des ressources présentes dans l’état de votre projet. Dans votre cas, l’output montre la ressource aws_instance.app_server.

Détruire une infrastructure 🔥
#

Pour détruire les ressources gérées par votre projet Terraform, vous pouvez utiliser la commande terraform destroy. Cette commande est l’inverse de terraform apply car elle permet de supprimer toutes les ressources spécifiées dans l’état Terraform. Elle ne détruit pas les ressources exécutées ailleurs qui ne sont pas gérées par le projet Terraform actuel.

Pour détruire les ressources que vous avez créées, exécutez la commande suivante :

terraform destroy

Terraform déterminera l’ordre dans lequel détruire vos ressources. Dans ce cas, Terraform a identifié une seule instance sans autres dépendances, donc elle a été détruite. Dans des cas plus complexes avec plusieurs ressources, Terraform les détruira dans un ordre adapté pour respecter les dépendances.

Importer une infrastructure ⤵️
#

Vous pouvez utiliser terraform import lorsque vous avez déjà une infrastructure existante, créée en dehors de Terraform, et que vous souhaitez la gérer avec Terraform sans la recréer à partir de zéro. L’importation est utile pour intégrer progressivement des ressources existantes dans votre configuration Terraform, vous permettant ainsi de les gérer et de les mettre à jour avec Terraform par la suite.

Voici quelques scénarios courants où l’utilisation de terraform import est appropriée :

  1. Ressources créées manuellement : Si vous avez des ressources AWS, Google Cloud Platform (GCP) ou d’autres fournisseurs qui ont été créées manuellement via la console web, vous pouvez les importer dans Terraform pour les gérer avec votre configuration Terraform existante.

  2. Configuration héritée : Lorsque vous héritez d’un projet existant dont l’infrastructure a été déployée en dehors de Terraform, l’importation vous permet d’intégrer ces ressources dans votre configuration Terraform sans modifier leur état actuel.

Pour importer une ressource, utilisez la commande terraform import suivie du type de ressource Terraform et de l’ID unique de la ressource dans le provider. Par exemple, pour importer une instance EC2 AWS :

terraform import aws_instance.example i-0123456789abcdef0

Il est essentiel de noter que l’importation ne crée pas automatiquement la configuration Terraform pour la ressource. Vous devrez écrire manuellement la configuration Terraform appropriée pour chaque ressource importée.

L’utilisation de terraform import est une opération délicate, car ==vous devez vous assurer que l’état Terraform correspond exactement à l’état réel de la ressource==. Il est essentiel de comprendre les détails de la ressource et de valider les changements apportés avant de les appliquer avec Terraform. L’importation de ressources complexes peut nécessiter des ajustements supplémentaires dans votre configuration Terraform pour assurer une gestion correcte et cohérente de l’infrastructure.

Actualiser l’état de Terraform avec l’infrastructure réelle 🔄
#

La commande terraform refresh est utilisée pour actualiser l’état de Terraform en fonction de l’infrastructure réelle actuellement en place. Cela permet à Terraform de mettre à jour sa représentation de l’état actuel de votre infrastructure sans apporter de modifications.

Lorsque vous exécutez terraform refresh, Terraform interroge les fournisseurs cloud (par exemple AWS, GCP, etc.) pour obtenir les détails actuels des ressources qui sont gérées par votre configuration. Les valeurs actuelles des attributs des ressources sont mises à jour dans l’état Terraform sans apporter de modifications aux ressources réelles.

Marquer une ressource comme requérant une récréation 🔂
#

La commande terraform taint est utilisée pour marquer une ressource comme “tainted” (requérant une récréation) dans l’état Terraform. Cela signifie que la prochaine exécution de terraform apply recréera cette ressource, qu’elle soit ou non réellement modifiée dans la configuration Terraform. Cela peut être utile lorsque vous souhaitez forcer la recréation d’une ressource, par exemple pour appliquer une mise à jour ou résoudre un problème.

Le format de la commande est le suivant :

terraform taint [OPTIONS] ADDRESS

  • ADDRESS : L’adresse de la ressource que vous souhaitez marquer comme “tainted.”
Attention ! Utilisez cette commande avec précaution, car elle peut entraîner la recréation de ressources, ce qui peut avoir un impact sur votre infrastructure existante.

Articles connexes

Backend
terraform
Déployer un agent Terraform - Docker
docker agent terraform
Meta-Argument
terraform