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 toutapply: un remplacement (-/+) d'une ressource qui porte des données est une perte de données. - Évitez
-auto-approvesur 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.