Aller au contenu

Terraform : définition

Vous entendez souvent parler de termes comme IAC, terraform, statefils et vous êtes perdus ou ne comprenez pas leurs usages ? Pas de panique, ce Késaco est fait pour vous.

Qu'est ce que Terraform ?

Vous entendez souvent parler de termes comme IAC, Terraform, statefiles et vous êtes perdus ou ne comprenez pas leurs usages ? Pas de panique, ce Késaco est fait pour vous.

N’en déplaise aux fanas de science-fiction, il ne s’agira pas ici (pour l’instant) de terraformer une exoplanète pour la rendre habitable à l’espèce humaine. Mais, à défaut, de découvrir Terraform, un outil d’Infrastructure As Code développé par Hashicorp. 

En utilisant sa syntaxe de configuration, le HashiCorp Configuration Language (HCL) ou une structure JSON, il est possible de grandement simplifier les déploiements d’infrastructures cloud. De plus, une grande partie du travail étant automatisée par Terraform, cela réduit également grandement les risques d’erreurs humaines

Quelques caractéristiques de Terraform sont:

  • Infrastructure as Code (IaC) : Terraform permet d’utiliser du code et un langage déclaratif pour définir l’infrastructure à créer. Les serveurs, bases de données, composants réseaux…

De plus, ce code permet de s’assurer de la cohérence du code entre différents environnements et les différentes étapes de la chaîne de développement (développement, staging, production... ).

  • Multicloud : Terraform est ‘provider agnostic’, ressources et datas sources permettent, grâce à des appels APIs, d’interagir avec une grande variété de fournisseurs cloud, Google, AWS, Azure, VMWare… tout cela via un seul outil.
  • Ressources : Terraform permet de créer, modifier ou détruire des ressources du plus bas niveau (compute instance, storage…) au plus haut niveau (DNS, Réseau, load balancer…)
  • Plan&Apply : Le workflow de Terraform se fait en deux étapes, `terraform plan` qui va fournir un aperçu des changements qui seront effectués. Cela permet d’avoir une meilleure compréhension des modifications et de réduire les conséquences d’un changement inattendu. Le `terraform apply`qui va effectivement déployer la nouvelle infrastructure.
https://developer.hashicorp.com/_next/image?url=https%3A%2F%2Fcontent.hashicorp.com%2Fapi%2Fassets%3Fproduct%3Dtutorials%26version%3Dmain%26asset%3Dpublic%252Fimg%252Fterraform%252Fterraform-iac.png%26width%3D2400%26height%3D870&w=3840&q=75
terraform un outil IAC multi-cloud
  • State Management : Terraform maintient un state file qui garde en mémoire l’état courant de l’infrastructure. Ce fichier est crucial pour éviter la drift de l’infrastructure et planifier les changements futurs
  • Modularité : Terraform supporte la création de modules qui permettent le partage du code et sa durabilité tout en fournissant un code moins verbeux. Cela permet la mise en place de bonnes pratiques et réduit la duplication de code. Pour en 
  • Version Control : les configurations Terraform étant du code, elles peuvent être indexées, versionnées et strockées dans des systèmes de version control comme git. Cela encourage le travail collaboratif et permet également de suivre les modifications du code.

Conclusion

Terraform est un outil puissant, mais il ne faut pas pour autant l’utiliser à tort et à travers. Il est essentiel de s’assurer que le State est à jour et d’éviter les modifications manuelles et non suivies, sous peine de corrompre la source de vérité concernant l’infrastructure réelle. Cela implique de prendre en main un nouveau paradigme, et pour des infrastructures par définition éphémères ou petites, cet outil peut être surdimensionné. En revanche, pour un projet plus pérenne ou de plus grosse ampleur avec une équipe de développement, du suivi de run et des évolutions fréquentes du projet, Terraform trouve toute sa place dans la boîte à outils des organisations.

Dernier