Blog Layout

Devops Team Xbit • 5 octobre 2023
Terraform : Le guide ultime

Guide Terraform et l'IaC (Infrastructure en tant que Code)

Dans ce guide nous allons couvrir  tous les concepts fondamentaux de Terraform et son fonctionnement a une brève introduction de l'Infrastructure as Code (IaC), le cycle de vie de Terraform, et tous les concepts de base que tout débutant devrait connaître.

Ce guide vous permettra de démarrer rapidement l'utilisation de Terraform.

Qu'est-ce que l'infrastructure en tant que code (IaC) ?

Infrastructure as Code (IaC) est une terminologie très répandue parmi les professionnels DevOps et une pratique DevOps clé dans l'industrie. Il s'agit du processus de gestion et de provisionnement de l'infrastructure informatique complète (comprenant à la fois des machines physiques et virtuelles) à l'aide de fichiers de définition lisibles par machine. Il aide à automatiser le centre de données complet en utilisant des scripts de programmation.


Les outils d'infrastructure en tant que code (IaC) permettent de gérer l'infrastructure à l'aide de fichiers de configuration plutôt qu'au moyen d'une interface utilisateur graphique. L'IaC vous permet de construire, de modifier et de gérer votre infrastructure d'une manière sûre, cohérente et reproductible en définissant des configurations de ressources que vous pouvez modifier, réutiliser et partager.

Outils populaires de l'IaC

1. Terraform : Un outil déclaratif open-source qui offre des modules pré-écrits pour construire et gérer une infrastructure.

2. Chef : un outil de gestion de la configuration qui utilise des livres de cuisine et des recettes pour déployer l'environnement souhaité. Utilisé de préférence pour déployer et configurer des applications à l'aide d'une approche « pull-based ».

3. Puppet : Outil populaire de gestion de la configuration qui suit un modèle client-serveur. Puppet a besoin que des agents soient déployés sur les machines cibles avant de pouvoir commencer à les gérer.

4. Ansible : Ansible est utilisé pour construire des infrastructures ainsi que pour déployer et configurer des applications au-dessus d'elles. Il est mieux utilisé pour l'analyse ad hoc.

5. Packer : Outil unique qui génère des images de VM (pas de VM en cours d'exécution) basées sur les étapes que vous fournissez. Utilisé de préférence pour la création d'images de calcul.

6. Vagrant : Construit des VM à l'aide d'un flux de travail. Utilisé de préférence pour créer des VM de développement préconfigurées dans VirtualBox.

Qu'est-ce que Terraform ?

Terraform est l'un des outils d'Infrastructure-as-code (IaC) les plus populaires, utilisé par les équipes DevOps pour automatiser les tâches d'infrastructure. Il est utilisé pour automatiser le provisionnement de vos ressources cloud. Terraform est un outil de provisionnement open-source, agnostique au cloud, développé par HashiCorp et écrit en langage GO.

Les avantages de Terraform

  • Fait de l'orchestration, pas seulement de la gestion de configuration
  • Prend en charge de nombreux fournisseurs tels que AWS, Azure, Oracle, GCP, et bien d'autres encore
  • Fournit une infrastructure immuable où les changements de configuration se font en douceur
  • Utilise un langage facile à comprendre, HCL (HashiCorp configuration language)
  • Facilement portable vers n'importe quel autre fournisseur

Gérer tout type d'infrastructure avec Terraform

Les plugins Terraform, appelés fournisseurs, permettent à Terraform d'interagir avec des plateformes cloud et d'autres services via leurs interfaces de programmation d'applications (API). HashiCorp et la communauté Terraform ont écrit plus de 1 000 fournisseurs pour gérer les ressources sur Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk et DataDog, pour n'en citer que quelques-uns. Vous trouverez dans le registre Terraform des fournisseurs pour la plupart des plateformes et des services que vous utilisez déjà. Si vous ne trouvez pas le fournisseur que vous recherchez, vous pouvez écrire le vôtre.. 

Standardisez votre flux de déploiement

Les fournisseurs définissent des unités individuelles d'infrastructure, par exemple des instances de calcul ou des réseaux privés, en tant que ressources. Vous pouvez composer des ressources provenant de différents fournisseurs en configurations Terraform réutilisables appelées modules, et les gérer à l'aide d'un langage et d'un flux de travail cohérents.


Le langage de configuration de Terraform est déclaratif, ce qui signifie qu'il décrit l'état final souhaité pour votre infrastructure, contrairement aux langages de programmation procéduraux qui nécessitent des instructions étape par étape pour exécuter les tâches. Les fournisseurs de Terraform calculent automatiquement les dépendances entre les ressources pour les créer ou les détruire dans le bon ordre.

Concepts fondamentaux de Terraform

Cycle de vie de Terraform

Le cycle de vie de Terraform comprend les étapes suivantes : démarrage, planification, application et destruction.

  1. Terraform init initialise l'environnement Terraform (local). Il n'est généralement exécuté qu'une seule fois par session.
  2. Terraform plan compare l'état de Terraform avec l'état tel quel dans le nuage, construit et affiche un plan d'exécution. Cela ne modifie pas le déploiement (lecture seule).
  3. Terraform apply exécute le plan. Cela modifie potentiellement le déploiement.
  4. Terraform destroy supprime toutes les ressources qui sont régies par cet environnement terraform spécifique.

Concepts clés 

  1. Variables : Terraform possède des variables d'entrée et de sortie, il s'agit d'une paire clé-valeur. Les variables d'entrée sont utilisées comme paramètres pour entrer des valeurs au moment de l'exécution afin de personnaliser nos déploiements. Les variables de sortie sont les valeurs de retour d'un module Terraform qui peuvent être utilisées par d'autres configurations.
  2. Fournisseur : Les utilisateurs de Terraform provisionnent leur infrastructure sur les principaux fournisseurs de cloud tels que AWS, Azure, OCI et autres. Un fournisseur est un plugin qui interagit avec les différentes API nécessaires pour créer, mettre à jour et supprimer diverses ressources.
  3. Module : Tout ensemble de fichiers de configuration Terraform dans un dossier est un module. Chaque configuration Terraform possède au moins un module, appelé module racine.
  4. État : Terraform enregistre les informations relatives à l'infrastructure créée dans un fichier d'état Terraform. Grâce au fichier d'état, Terraform est en mesure de retrouver les ressources qu'il a créées précédemment, censées les gérer et les mettre à jour en conséquence.
  5. Ressources : Les fournisseurs de cloud proposent divers services dans leurs offres, ils sont référencés en tant que ressources dans Terraform. Les ressources Terraform peuvent être des instances de calcul, des réseaux virtuels ou des composants de plus haut niveau tels que des enregistrements DNS. Chaque ressource possède ses propres attributs pour la définir.
  6. Source de données : La source de données effectue une opération en lecture seule. Elle permet de récupérer ou de calculer des données à partir de ressources/entités qui ne sont pas définies ou gérées par Terraform ou la configuration Terraform actuelle.
  7. Plan : C'est l'une des étapes du cycle de vie de Terraform où l'on détermine ce qui doit être créé, mis à jour ou détruit pour passer de l'état réel/courant de l'infrastructure à l'état désiré.
  8. Appliquer : C'est l'une des étapes du cycle de vie de Terraform où l'on applique les changements de l'état réel/courant de l'infrastructure afin d'atteindre l'état désiré.

Configuration de Terraform

Fournisseurs Terraform

Un fournisseur est chargé de comprendre les interactions de l'API et d'exposer les ressources. Il s'agit d'un plug-in exécutable qui contient le code nécessaire pour interagir avec l'API du service. Les configurations Terraform doivent déclarer les fournisseurs dont elles ont besoin pour que Terraform puisse les installer et les utiliser.

Terraform a plus d'une centaine de fournisseurs pour différentes technologies, et chaque fournisseur donne à l'utilisateur de Terraform l'accès à ses ressources. Ainsi, par le biais du fournisseur AWS, par exemple, vous avez accès à des centaines de ressources AWS comme les instances EC2, les utilisateurs AWS, etc.

Fichiers de configuration Terraform

Les fichiers de configuration sont un ensemble de fichiers utilisés pour décrire l'infrastructure dans Terraform et portent les extensions .tf et .tf.json. Terraform utilise un modèle déclaratif pour définir l'infrastructure. Les fichiers de configuration vous permettent d'écrire une configuration qui déclare l'état souhaité. Les fichiers de configuration sont constitués de ressources avec des paramètres et des valeurs représentant l'état souhaité de votre infrastructure.

Une configuration Terraform est composée d'un ou plusieurs fichiers dans un répertoire, de binaires de fournisseurs, de fichiers de plan et de fichiers d'état une fois que Terraform a exécuté la configuration.


1. Fichier de configuration (fichiers *.tf) : C'est ici que nous déclarons le fournisseur et les ressources à déployer, ainsi que le type de ressource et tous les paramètres spécifiques aux ressources.


2. Fichier de déclaration des variables (variables.tf ou variables.tf.json) : Il s'agit de déclarer les variables d'entrée nécessaires à l'approvisionnement des ressources.


3. Fichiers de définition des variables (terraform.tfvars) : Ici, nous attribuons des valeurs aux variables d'entrée


4. Fichier d'état (terraform.tfstate) : un fichier d'état est créé une fois que Terraform est exécuté. Il stocke l'état de notre infrastructure gérée.



Commencer à utiliser Terraform

Pour commencer à construire des ressources d'infrastructure à l'aide de Terraform, il y a quelques points à respecter. Les étapes générales pour déployer une ou plusieurs ressources dans le nuage sont les suivantes :

  1. Configurer un compte cloud sur n'importe quel fournisseur de cloud (AWS, Azure, OCI, Xbit)
  2. Installer Terraform
  3. Ajouter un fournisseur - AWS, Azure, OCI, GCP, ou autres
  4. Écrire les fichiers de configuration
  5. Initialiser les fournisseurs Terraform
  6. PLAN (DRY RUN) à l'aide de terraform plan
  7. APPLY (créer une ressource) à l'aide de terraform apply
  8. DESTROY (Supprimer une ressource) en utilisant terraform destroy

Terraform : Foire aux Questions

Dois-je avoir une expérience préalable de la programmation ou de l'infrastructure pour suivre le guide ?

Non, il n'est pas nécessaire d'avoir une expérience préalable de la programmation ou de l'infrastructure pour suivre ce guide. Il est conçu pour les débutants et ne suppose aucune connaissance préalable de Terraform. Le guide fournit des explications et des exemples étape par étape pour aider les nouveaux venus à comprendre et à appliquer les concepts de manière efficace.


Existe-t-il des conditions préalables à l'utilisation de Terraform ?

Le guide peut mentionner quelques conditions préalables, telles qu'une compréhension de base des concepts de l'informatique en nuage et la possession d'un compte auprès d'un fournisseur d'informatique en nuage (si vous envisagez de provisionner des ressources dans le nuage). En outre, il peut recommander d'installer Terraform et un éditeur de texte adapté à l'écriture de code.


Le guide fournit-il des exemples et des exercices pratiques ?

Oui, le Guide du débutant Terraform comprend généralement des exemples et des exercices pratiques tout au long de son contenu. Ces exemples aident à consolider les concepts et permettent aux lecteurs de s'entraîner à écrire des configurations Terraform, à exécuter des commandes et à gérer les ressources de l'infrastructure.


Comment Infrastructure as Code gère-t-il les mises à jour et les changements de l'infrastructure ?

Les outils d'Infrastructure as Code gèrent généralement les mises à jour et les changements en comparant l'état souhaité défini dans le code avec l'état actuel de l'infrastructure. Lorsque des changements sont apportés au code, les outils génèrent un plan d'exécution qui décrit les modifications nécessaires pour atteindre l'état souhaité. Ce plan peut être revu et appliqué pour mettre à jour ou modifier l'infrastructure en conséquence.


Puis-je utiliser Infrastructure as Code pour une infrastructure existante ?

Oui, l'infrastructure en tant que code peut être utilisée pour l'infrastructure existante. En définissant l'infrastructure existante dans le code, vous pouvez capturer son état actuel et y apporter des modifications à l'aide de fichiers de configuration basés sur le code. Cette approche vous permet de gérer l'infrastructure existante de manière cohérente et automatisée.



Contactez Xbit pour plus d'informations sur nos expertises et offres

A computer screen with a dashboard that says pxbit
par DevOps Xbit Team 15 juin 2024
Creer son propre Cloud avec Kubernetes Chez Xbit, nous avons une profonde affection pour Kubernetes et rêvons que toutes les technologies modernes commencent bientôt à utiliser ses remarquables modèles. Les gourvernements et entreprises privees revent de construire leur propre infrastructure cloud. Mais est-il possible de le faire en utilisant uniquement des technologies et des approches modernes, sans quitter l'écosystème confortable de Kubernetes ? Notre expérience dans le développement de Xstack nous a obligés à nous y plonger profondément. Vous pourriez arguer que Kubernetes n'est pas destiné à cet usage et pourquoi ne pas simplement utiliser OpenStack pour les serveurs bare metal et exécuter Kubernetes à l'intérieur comme prévu. Mais ce faisant, vous transféreriez simplement la responsabilité de vos mains à celles des administrateurs d'OpenStack. Cela ajouterait au moins un autre système énorme et complexe à votre écosystème. Pourquoi compliquer les choses ? - Après tout, Kubernetes a déjà tout ce qu'il faut pour faire fonctionner des clusters Kubernetes locataires à ce stade. Nous partageons ici notre expérience dans le développement d'une plateforme cloud basée sur Kubernetes, en mettant en avant les projets open-source que nous utilisons nous-mêmes et qui, selon nous, méritent votre attention. Vous découvrirez ici la façon dont nous préparons Kubernetes géré à partir de bare metal en utilisant uniquement des technologies open-source. En commençant par le niveau de base de la préparation du centre de données, l'exécution de machines virtuelles, l'isolation des réseaux, la mise en place d'un stockage tolérant aux pannes jusqu'au provisionnement de clusters Kubernetes complets avec provisionnement dynamique de volume, équilibreurs de charge et mise à l'échelle automatique. Dans cet article, nous entamons une série composée de plusieurs parties : Partie 1 : Préparer le terrain pour votre cloud. Les défis rencontrés lors de la préparation et de l'exploitation de Kubernetes on bare metal et une recette toute faite pour le provisionnement de l'infrastructure. Partie 2 : Mise en réseau, stockage et virtualisation. Comment transformer Kubernetes en un outil de lancement de machines virtuelles et ce qui est nécessaire pour cela. Partie 3 : API de cluster et comment commencer à provisionner des clusters Kubernetes en appuyant sur un bouton. Comment fonctionne l'autoscaling, le provisionnement dynamique des volumes et les load balancers. Nous essaierons de décrire les différentes technologies de la manière la plus indépendante possible, tout en partageant notre expérience et en expliquant pourquoi nous avons opté pour une solution ou une autre. Pour commencer, comprenons le principal avantage de Kubernetes et comment il a changé l'approche de l'utilisation des ressources du cloud. Il est aussi important de comprendre que l'utilisation de Kubernetes dans le nuage et sur le métal nu diffère.
par DevOps Team Xbit 24 mai 2024
L'architecture MACH révolutionne la manière dont les entreprises développent, distribuent et maintiennent les logiciels. Elle offre de nombreux avantages, notamment l'évolutivité, la flexibilité, d'excellentes performances, une fiabilité accrue, une meilleure expérience client et un délai de rentabilisation plus court. Grâce à l'approche MACH, les entreprises sélectionnent les meilleurs outils disponibles. En outre, elles maintiennent une structure qui facilite l'ajout, la modification ou la suppression de ces outils à l'avenir. Cet article définit l'approche MACH, explique ses origines, ses principes, ses avantages et ses inconvénients. Il fournit également des exemples et des cas d'utilisation de l'architecture MACH. Enfin, nous la comparons à l'architecture traditionnelle et évaluons les technologies MACH sur la base de l'expertise de Xbit en matière de livraison de produits de bout en bout et de développement d'applications d'entreprise.
A computer generated image of a cloud with a circuit board inside of it.
par DevOps Team Xbit 25 janvier 2024
Guide du Cloud et de ses avantages pour l'entreprise moderne L'informatique dématérialisée ou Cloud Computing est la fourniture de ressources informatiques par l'intermédiaire d'Internet. Il permet de réaliser des économies de coûts, de s'adapter, d'obtenir des performances élevées, de réaliser des économies d'échelle et bien plus encore. Pour de nombreuses entreprises, la migration vers le cloud est directement liée à la modernisation des données et de l'informatique. Lorsque l'expression « cloud » a commencé à apparaître au début des années 2000, elle avait une connotation ésotérique. L'idée d'accéder à des ressources informatiques à partir d'un endroit autre qu'une infrastructure informatique sur site relevait de la science-fiction. La réalité a été bien plus profonde et a changé à jamais la technologie et la façon dont nous menons nos activités.
Share by: