Terraform

Ah, Terraform… Voilà un mot qui peut faire frissonner de plaisir ou d’angoisse celles et ceux qui s’intéressent à l’infrastructure ! Quand j’ai commencé à travailler avec cet outil, je dois avouer que j’étais un peu intimidée : la promesse d’automatiser entièrement la création de son infrastructure, c’est à la fois fantastique et effrayant. Mais aujourd’hui, je ne pourrais plus m’en passer.

C’est pourquoi j’ai envie de partager ici quelques connaissances et astuces glanées au fil de mes expériences, pour démystifier un peu Terraform et, qui sait, peut-être vous donner envie de l’essayer. Comme toujours, il ne s’agit pas d’une vérité absolue, mais simplement de ma façon de l’utiliser et de le comprendre.

Le début de l’automatisation

Avant Terraform, beaucoup d’équipes se contentaient de scripts bash, de clics manuels dans les consoles des Cloud providers, ou encore d’outils maison pour gérer leur infrastructure. Résultat ? Des environnements parfois incohérents, difficiles à reproduire et à maintenie.

Terraform a marqué un tournant dans le monde DevOps : il a popularisé le concept d’Infrastructure as Code (IaC) et rendu possible la création, la modification et la suppression d’infrastructure de manière déclarative et versionnée, comme pour du code source.

Avec lui, plus besoin de tout refaire à la main ou de documenter chaque étape : le fichier de configuration est votre vérité unique, et Terraform s’occupe de la mise en place.

Description

Terraform est un outil open source développé par HashiCorp. Il vous permet de décrire votre infrastructure via des fichiers de configuration (en langage HCL, pour Hashicorp Configuration Language) et de la déployer automatiquement sur des fournisseurs cloud comme AWS, Azure, GCP, mais aussi sur des SaaS, des outils comme GitHub ou encore VMWare.

Source de l’image : HashiCorp, site officiel – https://developer.hashicorp.com/terraform

Il s’appuie sur un état (state) pour comparer ce qui existe réellement avec ce qui est décrit dans vos fichiers. En fonction des différences, il planifie et applique les modifications nécessaires pour rendre votre infra conforme à vos souhaits.

En gros, vous écrivez ce que vous voulez, et Terraform s’occupe du « comment » ! Magique, non ?

Points forts

Terraform, c’est avant tout :

  • Déclaratif : vous décrivez l’état souhaité, pas la séquence d’actions.
  • Multi-cloud : vous pouvez gérer plusieurs fournisseurs dans le même projet.
  • Versionné : vos fichiers .tf peuvent vivre dans Git comme n’importe quel code.
  • Planification claire : avant chaque modification, Terraform affiche un plan qui détaille ce qu’il va créer, modifier ou supprimer.
  • Communauté énorme : un nombre incalculable de modules et de ressources sont déjà disponibles.
  • Automatisation puissante : associé à un pipeline CI/CD, Terraform permet d déployer automatiquement votre infra.

Points faibles

Mais comme tout outil, il a ses défauts :

  • Courbe d’apprentissage : comprendre la syntaxe HCL, le state, le fonctionnement des providers peut demander un peu de temps au début.
  • Gestion du state : le fichier state est un point critique. Mal géré (non sécurisé, pas stocké de façon centralisée), il peut devenir un cauchemar.
  • Destruction accidentelle : une erreur dans la configuration peut mener à la suppression involontaire de ressources en prod (et ça fait mal).
  • Dépendances complexes : sur des infrastructures très grosses, la gestion des dépendances et des ordres de création peut vite devenir un casse-tête.

Pourquoi utiliser Terraform ?

Je me suis souvent posée la question ; pourquoi Terraform plutôt qu’un autre ? Et je reviens toujours aux mêmes points.

  • Tout le monde peut utiliser le même code pour déployer la même infra, en local ou sur un cloud.
  • Savoir qui a changé quoi, quand, et pourquoi, c’est un gain énorme en auditabilité.
  • Terraform réduit les erreurs humaines : moins de clics manuels, moins d’oublis.
  • En quelques minutes, un nouvel environnement peut être prêt. Terraform permet de reproduire un environnement de secours, sans effort (et ça, on aime).
  • En gros, Terraform vous offre cohérence, rapidité et sérénité.

Comment ?

Avant de se lancer, il est important de comprendre quelques concepts clés :

  • Providers : ils définissent avec quel service Terraform va interagir (AWS, Azure, GCP, etc.).
  • Resources : ce sont les composants que vous créez (VM, réseau, bucket, etc.).
  • Modules : des blocs réutilisables qui regroupent plusieurs ressources.
  • State : un fichier (terraform.tfstate) qui garde la trace de ce qui est déployé.
  • Plan : une commande qui montre ce que Terraform va faire avant de l’appliquer.

Le cycle basique d’utilisation ressemble à ça :

  1. Rédaction des fichiers .tf pour décrire l’infrastructure
  2. Initialiser le projet avec terraform init.
  3. Lancer un plan avec terraform plan pour vérifier ce qui sera modifié.
  4. Appliquer les changements avec terraform apply.
  5. En cas de suppression, nettoyer avec terraform destroy pour tout supprimer.

Voici un petit exemple minimaliste pour créer un bucket S3 sur AWS :

provider "aws" {
  region = "eu-west-1"
}

resource "aws_s3_bucket" "my_bucket" {
  bucket = "mon-super-bucket-terraform"
  acl    = "private"
}

Conclusion

Terraform a changé ma façon de penser l’infrastructure. Je dirai même que lui et son compagnon, Ansible, m’ont permis d’aimer encore plus mon métier ! Quel plaisir d’analyser un besoin, de réfléchir à la mise en place d’une infra et de l’automatiser. Au moment d’appliquer un terraform apply, j’apprécie particulièrement de regarder mes machines se créer toute seule et sortir prête à l’emploi !

Grâce à ce genre d’outils, j’ai pu gagner en rigueur, en rapidité et en sérénité sur des projets allant de simples environnements de dév jusqu’à des plateformes de production complexes.

Comme toujours, n’oublions pas que Terraform n’est qu’un outil : c’est la manière dont vous l’intégrez dans vos process et la discipline de votre équipe qui feront la différence ! Prenez le temps de vous former, de tester, de versionner votre infra. N’hésitez pas à modifier, améliorer. Ca peut sembler coûteux au départ mais ce n’est qu’un gain de temps, d’argent et de satisfaction sur le long terme !

Retour en haut