Aller au contenu

Terraform

À quoi il sert

Terraform décrit une infrastructure (réseaux, machines, bases de données, droits, DNS, et presque tout ce qui a une API) dans des fichiers HCL versionnés. La commande plan compare cette description à l'état et à la réalité et affiche ce qu'elle va créer, modifier ou détruire ; apply l'exécute dans l'ordre imposé par les dépendances. Le cœur ne connaît aucun cloud : des fournisseurs, téléchargés depuis un registre et vérifiés par signature, parlent à chaque API. Scaleway maintient le sien.

Quand le choisir

Pour tout ce qui se commande à l'API d'un fournisseur : créer un VPC, un cluster Kapsule, une base managée, une politique IAM, un enregistrement DNS. Face à OpenTofu, sa bifurcation libre, Terraform se choisit surtout pour son intégration avec l'offre hébergée de l'éditeur (HCP Terraform) ou pour une fonctionnalité qui lui est propre ; la licence BUSL autorise l'usage pour sa propre infrastructure, mais pas d'en faire une offre concurrente de celle de l'éditeur. Pour l'intérieur des machines, préférez cloud-init, une image ou Ansible.

Points d'attention

  • L'état (terraform.tfstate) contient des secrets en clair : jamais dans Git, et un stockage distant chiffré et verrouillé dès qu'on travaille à plusieurs.
  • Versionnez .terraform.lock.hcl, qui fixe les versions et les empreintes des fournisseurs, et épinglez la version de l'outil (required_version) pour toute l'équipe et la CI.
  • Lisez la ligne Plan: avant tout apply : un remplacement (-/+) d'une ressource qui porte des données est une perte de données.
  • Évitez -auto-approve sur un poste ; en CI, appliquez un plan enregistré et relu.
  • Une seule équipe, un seul outil : ne mélangez pas Terraform et OpenTofu sur le même état.

Par où commencer

La leçon Pourquoi l'infrastructure as code, puis Premier projet : init, plan, apply, destroy, qui déroule le cycle complet sur des ressources locales. Pour une infrastructure réelle complète : Signalements sur Scaleway, en code.