Automatisation·

L'automatisation avec Terraform et Ansible : Clé du DevOps

Cet article explore et explique le rôle crucial de l'automatisation avec Terraform et Ansible dans le monde de DevOps.
L'automatisation avec Terraform et Ansible : Clé du DevOps

Introduction : Terraform + Ansible, le duo que je déploie partout

Si je devais résumer mon approche Infrastructure as Code en deux outils, ce serait Terraform et Ansible. Terraform provisionne l'infrastructure Cloud, Ansible configure ce qui tourne dessus. Cette séparation des responsabilités est la clé d'une automatisation maintenable.

Terraform : l'infrastructure déclarative

Terraform décrit l'état souhaité de votre infrastructure, et se charge de l'atteindre. C'est cette approche déclarative qui le rend si puissant. Chez un éditeur de logiciels, j'ai développé 25 modules Terraform pour une architecture AWS Multi-Compte complète :

  • Réseau : VPC, subnets, NAT Gateway, Transit Gateway
  • Compute : EKS Fargate, groupes d'instances
  • Base de données : Aurora Serverless v2
  • Sécurité : WAF, GuardDuty, Security Groups
  • IAM : rôles cross-account, policies least privilege

Le tout est réutilisable : créer un nouvel environnement (dev, staging, prod) prend 30 minutes au lieu de 2 jours. Et l'infrastructure est identique entre les environnements, ce qui élimine les "ça marche en staging mais pas en prod".

Terraform multi-cloud : une réalité

J'utilise Terraform sur AWS, GCP, Azure, OVH, Scaleway et Outscale. Le même langage (HCL), la même logique, des providers différents. Chez Earny SA, la migration de GCP vers AWS a impliqué la réécriture des modules Terraform, mais la méthodologie était identique. L'équipe n'a pas eu besoin de réapprendre un outil.

Chez Metronome, Terraform provisionne l'infrastructure OVH Cloud (réseau, nodes K8s, stockage), puis Helm/ArgoCD prennent le relais pour la partie applicative.

Ansible : la configuration au plus près

Ansible intervient là où Terraform s'arrête : la configuration de l'OS et des services. Chez Epiconcept, dans la santé publique, Ansible gère depuis 4 ans :

  • Installation et configuration de MariaDB avec réplication
  • Déploiement d'applications Docker
  • Configuration Nginx avec TLS
  • Hardening OS (SSH, firewall, sysctl)
  • Rotation des backups

L'idempotence d'Ansible permet de relancer les playbooks sans crainte. Et l'absence d'agent simplifie grandement la mise en place dans des environnements sécurisés.

La combinaison Terraform + Ansible en pratique

Mon workflow standard :

  1. Terraform crée l'infrastructure (VPC, instances, clusters K8s, DNS, certificats)
  2. Ansible configure les instances (OS hardening, Docker, monitoring agents)
  3. Helm/ArgoCD déploie les applications sur Kubernetes

Chaque couche est indépendante et testable. Le pipeline GitHub Actions valide la syntaxe Terraform (terraform validate, tflint) et Ansible (ansible-lint) avant chaque merge.

Chez Bloomflow, cette triple couche a permis de reconstruire un environnement complet (infra + configuration + applications) en moins de 45 minutes, from scratch. C'est la définition d'une infrastructure reproductible.

Le piège à éviter : confondre les rôles

L'erreur que je vois souvent : utiliser Terraform pour configurer des serveurs (via des remote-exec) ou Ansible pour créer des ressources Cloud (via les modules cloud). Chaque outil a sa zone d'excellence. Terraform gère le lifecycle des ressources Cloud, Ansible gère la configuration. Respecter cette séparation rend le code plus maintenable et plus compréhensible.

Conclusion

Terraform et Ansible sont complémentaires, pas concurrents. Ensemble, ils couvrent l'intégralité du spectre Infrastructure as Code : du provisioning Cloud à la configuration applicative. Maîtriser ces deux outils, c'est avoir les clés pour automatiser n'importe quelle infrastructure, sur n'importe quel cloud, de manière reproductible et auditable.


RDV