Ansible et Terraform permettent l’implémentation des principes d’Infrastructure-as-Code dans le cadre de l’automatisation du déploiement et de l’administration des systèmes informatiques.

Éviter l'amalgame

Ces des outils traitent de phases différentes, mais complémentaires, du cycle de l’automatisation logicielles.

En l’occurrence, Terraform permet de concevoir et gérer l’infrastructure ; là où Ansible permet d’automatiser un certain nombre de tâches en substitution à des scripts shell par exemple. En clair, Ansible est un moteur d’automatisation générique, et Terraform un framework de gestion des infrastructures par l’automatisation.

Comparaison d’Ansible et Terraform

Intersection

  • Agentless, c’est à dire conçus sans agent. Ansible et Terraform communiquement respectivement par l’intermédaire de SSH et des API propres aux supports de déploiement.
  • Open source
  • Philosophie : l’automatisation et la reproductabilité comme noyau dur.

Différence symétrique

  • Approche langagière Les scripts Ansibles sont écris en YAML, tandis que Terraform repose sur l’utilisation du langage déclaratif HCL.
  • Architecture stateful et stateless
    • Terraform tient à jour un registre décrivant l’infrastructure et sa configuration. À partir de ce fichier, il est en mesure de gérer les ressources et leur évolution.
    • Ansible, quant à lui, ne maintient pas un tel historique. Ce dernier repose sur le principe d’idempotence visant à l’imutabilité du résultat pour une même action, et interroge le système cible avant d’effectuer une modification.
  • Évolutivité Ansible se prête à l’application de changemement à la volée, sur une infrastructure modifiable, évolutive. Par contre, Terraform préfèrera redéployer correctement cette dernière afin de réduire les risques d’erreurs.

Usages