Terraform est un outil open source d'infrastructure en tant que code (IaC) créé par HashiCorp.
Outil de codage déclaratif, Terraform permet aux développeurs d'utiliser un langage de configuration de haut niveau appelé HCL (HashiCorp Configuration Language) qui permet de décrire l'état final souhaité de l'infrastructure cloud ou sur site pour l'exécution d'une application. Terraform génère ensuite un plan permettant d'atteindre cet état final et exécute le plan pour mettre à disposition l'infrastructure.
Utilisant une syntaxe simple, Terraform peut mettre à disposition une infrastructure dans plusieurs centres de données cloud et sur site et peut remettre à disposition des infrastructures de façon sécurisée et efficace en réponse aux changements de configuration. Toutes ces qualités en font actuellement l'un des outils d'automatisation d'infrastructure les plus populaires. Si votre organisation prévoit de déployer un environnement de cloud hybride ou multicloud, vous voudrez ou devrez probablement vous familiariser avec Terraform.
Pour mieux comprendre les avantages de Terraform, il est utile de comprendre d'abord les avantages de l'infrastructure en tant que code (IaC). L'IaC permet aux développeurs de codifier l'infrastructure d'une manière qui automatise et accélère la mise à disposition et la rend reproductible. Il s'agit d'un élément clé des pratiques Agile et DevOps telles que le contrôle de version, l'intégration continue et le déploiement continu.
Avec l'infrastructure en tant que code, vous pouvez :
Regardez la vidéo ci-dessous « Qu'est-ce que l'infrastructure en tant que code ? » pour en savoir plus :
Il existe quelques raisons essentielles pour lesquelles les développeurs choisissent d'utiliser Terraform plutôt que d'autres outils d'infrastructure en tant que code :
Les modules Terraform sont de petites configurations réutilisables de Terraform pour plusieurs ressources d'infrastructure, qui sont utilisées ensemble. Les modules Terraform sont utiles car ils permettent d'automatiser des ressources complexes avec des constructions réutilisables et configurables. Le fait d'écrire même un fichier Terraform très simple crée un module. Un module peut appeler d'autres modules, appelés modules enfants, qui peuvent accélérer l'assemblage de la configuration et le rendre plus concis. Les modules peuvent également être appelés plusieurs fois, que ce soit dans une même configuration ou dans des configurations distinctes.
Les fournisseurs Terraform sont des plug-ins qui implémentent des types de ressource. Les fournisseurs contiennent tout le code requis pour l'authentification et la connexion à un service, généralement d'un fournisseur de cloud public, pour le compte de l'utilisateur. Vous pouvez trouver des fournisseurs pour les plateformes et les services cloud que vous utilisez, les ajouter à votre configuration, puis utiliser leurs ressources pour mettre à disposition une infrastructure. Il existe des fournisseurs pour la quasi-totalité des principaux fournisseurs de cloud, pour les offres SaaS, etc., qui sont développés et/ou pris en charge par la communauté Terraform ou des organisations individuelles. Reportez-vous à la documentation Terraform (lien externe à ibm.com) pour obtenir une liste détaillée.
Il y a parfois une confusion entre Terraform et Kubernetes, et sur ce qu'ils font réellement. Il ne s'agit pas d'alternatives l'un à l'autre et ils fonctionnent efficacement ensemble.
Kubernetes est un système d'orchestration de conteneurs open source qui permet aux développeurs de planifier des déploiements sur les nœuds d'un cluster de calcul et de gérer activement les charges de travail conteneurisés afin de garantir que leur état correspond aux intentions des utilisateurs.
Terraform, quant à lui, est un outil d'infrastructure en tant que code dont la portée est beaucoup plus large. Il permet aux développeurs d'automatiser une infrastructure complète s'étendant sur plusieurs clouds publics et privés.
Terraform peut automatiser et gérer les capacités de niveau IaaS (infrastructure en tant que service), PaaS (plateforme en tant que service), ou même SaaS (logiciel en tant que service) et construire toutes ces ressources sur tous ces fournisseurs en parallèle. Vous pouvez utiliser Terraform pour automatiser la mise à disposition de Kubernetes, en particulier les clusters Kubernetes gérés sur des plateformes cloud, et pour automatiser le déploiement d'applications dans un cluster.
Terraform et Ansible sont tous les deux des outils d'infrastructure en tant que code, mais il existe deux différences significatives entre les deux :
L'infrastructure en tant que code (IaC) automatise le provisionnement de l'infrastructure pour permettre à votre entreprise de développer, de déployer et de faire évoluer ses applications cloud plus rapidement, avec moins de risques et à moindre coût.
Kubernetes est une plateforme d'orchestration de conteneurs open source qui automatise le déploiement, la gestion et la mise à l'échelle des applications. Découvrez comment Kubernetes permet un développement cloud natif rentable.
Une introduction à l'IaaS, à ses composants, ses avantages, sa tarification et sa relation avec la PaaS (plateforme en tant que service), le SaaS (logiciel en tant que service), le BMaaS, les conteneurs et les solutions sans serveur.