fond

Terraform, c'est quoi ?

Terraform est un outil open source d'Infrastructure as Code, développé par la société HashiCorp. Il s'agit d'un outil largement utilisé et bien documenté, avec un répertoire en ligne proposant une liste variée de fournisseurs cloud et de modules.
decoration

C'est quoi l'Infrastructure as Code (IaC) ?

L'Infrastructure as Code (IaC) est un processus permettant de gérer toutes les ressources nécessaires à l'infrastructure via des fichiers de configuration plutôt que par des processus manuels ou des outils interactifs. La particularité de cette approche réside dans le fait que toute la gestion de l'infrastructure est définie par du code, plus précisément des fichiers de configuration. Ces fichiers de configuration sont lisibles par les humains, ce qui permet une meilleure compréhension et une gestion plus facile de l'infrastructure.

Cela permet de faciliter l'automatisation, le versioning et la reproductibilité des différents environnements (prod, dev, recette).

Quels sont les autres outils permettant de faire de l'Infrastructure as Code ?

Terraform est un des outils d'IaC les plus populaires, mais il n'est pas le seul sur le marché, on peut notamment trouver :

  • Pulumi : Il s'agit d'une alternative open source à Terraform permettant notamment de créer les fichiers de configuration sur différents langages : Go, Java, TypeScript, etc.
  • AWS CloudfFormation : CloudFormation est un outil d'IaC spécifiquement conçu pour AWS
  • Azure Bisep : Développé spécifiquement pour fonctionner avec Azure
  • Ansible
  • Chef
  • Puppet

Comment fonctionne Terraform ?

Les fichiers de configuration de Terraform

Tout comme les autres outils d'Infrastructure as Code, Terraform utilise des fichiers de configuration pour permettre la gestion de l'infrastructure. Ces derniers sont écrits en HashiCorp Configuration Language (HCL), et possèdent l'extension ".tf".

Ces fichiers ".tf" permettent de décrire l'état de notre infrastructure en y déclarant les différents éléments nécessaires.

Parmi ces éléments, on retrouve en autre :

  • Les "resources" : Une ressource correspond à un élément physique de votre infrastructure Cloud, par exemple un compte de stockage sur Azure ou un S3 sur AWS.
  • Les "variables"
  • Les "output" : Il s'agit de tout ce que l'on veut afficher en sortie, une fois l'infrastructure déployée, par exemple l'IP publique.
  • Le ou les "providers" : Cela correspond au fournisseur Cloud, tel qu'Azure, AWS, Google Cloud Platforme.
  • La "data ": L'élément data permet d'aller récupérer des données sur la plateforme cloud.

Les states, backends et workspaces

Terraform utilise les fichiers de configuration pour définir l'infrastructure désirée, puis compare cet état désiré avec l'état actuel de l'infrastructure. Pour gérer cette complexité, Terraform utilise trois concepts clé : states, backends, et workspaces.

  • State : Représenté par le fichier terraform.tfstate, le state stocke l'état actuel de votre infrastructure. Il permet de savoir où en est Terraform dans les infrastructures qu'il a déployé et dans les ressources qu'il a créé, supprimé ou modifié.
  • Backend : Le backend permet de définir l'endroit où sont stockés les states. Vous pouvez par exemple les stocker sur : votre ordinateur, un compte de stockage Azure, un S3 AWS, un PostgreSQL, etc. Par défaut, les states sont stockés en local, dans le répertoire d'exécution de Terraform.
  • Workspace : Le workspace permet de gérer plusieurs états distincts en utilisant la même configuration. Cela signifie que vous pouvez créer des states différents pour chaque environnement (production, recette, développement). Ainsi, chaque environnement peut avoir son propre état. Terraform permet ainsi de maintenir des environnements séparés, chacun ayant son propre state, tout en utilisant une configuration unique.

Le cycle de vie de Terraform

Le cycle de vie de Terraform fonctionne avec quatre commandes principales :

  • init : C'est la première commande à exécuter pour lancer le cycle de vie et initialiser le répertoire.
  • plan : Cette commande permet de gérer la planification. Elle montre ce qui va être créé, modifié ou supprimé dans l'infrastructure, offrant une vue d'ensemble des changements à venir. Cela permet d'avoir un véritable plan de construction avant d'appliquer les modifications.
  • apply : Une fois la planification faite, apply permet d'appliquer les changements à l'infrastructure. Elle exécute les actions nécessaires pour mettre à jour l'infrastructure conformément à l'état désiré.
  • destroy : Permet de supprimer l'infrastructure

Les avantages de Terraform

L'utilisation de l'Infrastructure as Code avec l'outil Terraform présente de nombreux avantages :

1- Multi-plateforme Cloud : Terraform est compatible avec un très grand nombre de fournisseurs cloud, tels qu'AWSLe Cloud AWS (Amazon WebServices) est une plateforme de services cloud développée par le géant américain Amazon., AzureAzure est la plateforme de Cloud de Microsoft., Google CloudLe Cloud consiste à accéder à des ressources informatiques, à partir d'internet, via un fournisseur. Platform, Oracle Cloud Infrastructure, etc. De plus, il est possible de développer des plugins pour de nouveaux fournisseurs cloud.

2- Modularité et réutilisabilité : Il est possible de créer des modules réutilisables, facilitant ainsi la standardisation et l'uniformisation de l'infrastructure sur les différents projets.

3 - Planification : La planification de Terraform permet de visualiser les changements à apporter à l'infrastructure, indiquant ce qui doit être créé, modifié ou détruit.

4 - Gestion multi-environnement : Terraform permet de gérer plusieurs types d'environnements (développement, recette, production, etc.) en utilisant des workspaces différents. Cela rend plus facile la gestion des paramétrages et le découpage des ressources entre les différents environnements.

5 - Communauté et écosystème riche : Avec plus de 4200 providers et 16000 modules, Terraform jouit d'un écosystème très développé et d'une communauté active, qui participe à son évolution.

6 - La lisibilité : Le langage HCL est facilement lisible, et sa rédaction est intuitive grâce à sa structure de bloc, ce qui le rend plus accessible que des formats comme JSON ou YAML.

Les inconvénients de Terraform

Terraform possède tout de même quelques inconvénients notables. Tout d'abord, son utilisation optimale requiert impérativement l'apprentissage du langage HCL, contrairement à d'autres outils qui utilisent des langages plus répandus, comme TypeScript. De plus, il est important de notifier que Terraform est compatible avec plusieurs fournisseurs cloud, mais l'outil n'est pas pour autant cross-plateform. Autrement dit, lorsqu'on configure son infrastructure pour une plateforme spécifique, il est nécessaire de recommencer à zéro si l'on souhaite changer de plateforme.

Expertise Terraform Lyon

Terraform est l'un des outils d'IaC les plus utilisés au sein d'AXOPEN, nos experts DevOps s'en servent régulièrement pour automatiser les déploiements d'infrastructure.

Nous sommes en mesure de vous accompagner sur :

  • La mise en place de scripts Terraform pour le déploiement de votre infrastructure
  • La maintenance de vos scripts Terraform à travers notamment la montée de version de vos modules
  • L'optimisation de vos scripts Terraform et de votre infrastructure

Si vous souhaitez utiliser Terraform sur votre projet pour faciliter son déploiement et sa reproductibilité, n'hésitez pas à contacter nos experts pour que nous puissions vous aider à atteindre vos objectifs.

Nos Références clients