Qu'est-ce que Terraform et pourquoi il est génial
Publié: 2024-03-12La gestion de la configuration est la partie essentielle de la méthodologie DevOps et les outils comme Ansible, Chef, Puppet, Terraform ou SaltStack sont au cœur des écosystèmes de développement logiciel.
Terraform est l'exemple de la nouvelle génération de systèmes d'orchestration de configuration apportant une nouvelle couche de caractéristiques et de fonctionnalités. Jetons un coup d'œil à ce qu'est Terraform et pourquoi il est génial.
Terraform est l'outil d'orchestration de configuration qui fonctionne avec n'importe quel cloud, qu'il s'agisse d'un système privé sur site ou public, et permet une conception, une gestion et une amélioration sûres et pratiques de l'infrastructure en tant que code. En tant que partie de la pile Hashicorp, comprenant également Vagrant, Packer, Consul, Vault et Nomad, Terraform permet de provisionner n'importe quelle application écrite dans n'importe quel langage sur n'importe quelle infrastructure.
Voici les avantages d'utiliser Terraform au lieu d'Ansible, Chef, Puppet ou SaltStack :
- L'orchestration, pas seulement la configuration
- Infrastructure immuable
- Code déclaratif et non procédural
- Architecture client uniquement
Ci-dessous, nous expliquerons plus en détail pourquoi cela est si important.
Terraform, l'outil d'orchestration de serveur
Tous les outils mentionnés ci-dessus ont été créés pour la configuration des serveurs, ce qui signifie que leur objectif principal est d'installer et de gérer des logiciels sur les serveurs déjà existants. Terraform se concentre davantage sur le provisionnement des serveurs, le déploiement des conteneurs logiciels étant laissé à Docker ou Packer. Lorsque l’ensemble de l’infrastructure cloud est traitée comme du code et que tous les paramètres sont combinés dans des fichiers de configuration déclaratifs, tous les membres de l’équipe peuvent facilement collaborer dessus, comme ils le feraient sur n’importe quel autre code.
Les services de conseil Terraform peuvent considérablement améliorer l'efficacité de l'approvisionnement des serveurs et de la gestion de l'infrastructure, garantissant une intégration transparente avec les outils existants tels que Docker ou Packer pour le déploiement de conteneurs logiciels. En tirant parti de Terraform en conjonction avec des conseils d'experts, les équipes peuvent rationaliser la gestion de leur infrastructure cloud en la traitant comme du code, permettant une collaboration plus fluide et une utilisation optimisée des ressources.
Infrastructure immuable
Avec Chef, Salt, Puppet ou Ansible, toute mise à jour logicielle doit être exécutée sur place. Ainsi dit, chaque serveur génère un enregistrement unique de mises à jour tout au long de son cycle de vie. Cela peut très souvent conduire à ce qu'on appelle une dérive de configuration lorsque les différences entre ces configurations conduisent à des bugs, qui peuvent être utilisés comme exploits et failles de sécurité. Terraform résout le problème en utilisant une approche d'infrastructure immuable , dans laquelle chaque nouvelle mise à jour d'un paramètre crée un instantané de configuration distinct, ce qui signifie le déploiement d'un nouveau serveur et le déprovisionnement de l'ancien si nécessaire. De cette façon, la mise à jour de l'environnement de développement se déroule de manière fluide, simple et totalement à l'épreuve des bogues, tandis que revenir à l'une des configurations précédentes est aussi simple que de choisir l'instantané de configuration et de provisionner un nouvel environnement en fonction de celui-ci.
Style de code déclaratif
Alors que Chef ou Ansible vous obligent à rédiger des instructions procédurales étape par étape pour atteindre l'état souhaité, Terraform, Salt ou Puppet préfèrent décrire l'état final souhaité du système, et l'outil lui-même s'occupe d'atteindre les objectifs fixés. Pourquoi est-ce mieux ? Parce qu'un nombre assez limité de modèles peut satisfaire tous les besoins de gestion de configuration, et les primitives incluses permettent de créer un code complexe, mais propre et modulaire. Avec le code de procédure, vous devez penser à tous les événements et processus récents qui ont eu lieu afin de rédiger des instructions claires. Avec Terraform, vous commandez simplement à l'outil de faire quelque chose avec l'état actuellement actif du système, c'est pourquoi la base de code reste assez petite et facilement compréhensible.
Architecture client uniquement
Terraform exploite l'API du fournisseur de cloud pour provisionner l'infrastructure, ce qui élimine le besoin de contrôles de sécurité supplémentaires, en exécutant un serveur de gestion de configuration distinct et plusieurs agents logiciels. Ansible le fait en se connectant via SSH, mais les capacités sont assez limitées. Grâce au travail via des API, Terraform présente une variété d'actions littéralement infinie. C'est bien mieux en termes de sécurité, de maintenabilité et de facilité d'utilisation globale.
Inconvénients de Terraform
Terraform étant un outil relativement nouveau, il est encore loin d’être parfait. Par exemple, le fournisseur avait corrigé un bug dans le fournisseur d'allumage Terraform et supprimé les retraits de JSON, ce qui a forcé la recréation de toutes les infrastructures précédemment configurées.
Une autre chose importante à noter est qu'il doit y avoir un seul maître de chapelle lors de l'utilisation de cet outil d'orchestration, car effectuer les mêmes actions à partir de différents terminaux avec différentes versions de Terraform peut conduire à un résultat imprévisible. Des problèmes évidents de collaboration et de gouvernance surviennent et, pour l’instant, ils doivent encore être résolus. Cela limite à peu près le nombre d'ingénieurs DevOps travaillant avec une base de code à un (ou à un seul terminal travaillant par équipes).
Le troisième défaut de Terraform est qu'il a été développé avec un déploiement uniquement dans le cloud, alors que ses homologues comme Salt, Ansible, Puppet fonctionnent très bien avec des serveurs nus, car ils ont été développés il y a plus de 5 ans, sans approche uniquement dans le cloud. esprit. Cela fait de l'outil d'orchestration de configuration Terraform une solution vraiment spécifique à un créneau et non une solution universelle.
Nous sommes cependant sûrs qu'au cours des prochaines années, tous les bugs seront corrigés et tous les problèmes seront résolus, renforçant ainsi les avantages incontestables de Terraform.
Avantages de Terraform
En plus des avantages mentionnés ci-dessus, il existe deux principaux avantages de Terraform que vous devez garder à l'esprit :
- Super portabilité : vous disposez d'un outil et d'un langage pour décrire l'infrastructure du cloud Google, AWS, OpenStack et TOUT autre cloud. Changer de fournisseur n’est plus un casse-tête.
- Facilité de déploiement complet : vous pouvez avoir des instances Amazon exécutant des conteneurs Kubernetes avec vos charges de travail et gérer l'ensemble du système à partir d'un seul outil.
Nous considérons Terraform comme l'un des meilleurs outils d'orchestration de configuration disponibles aujourd'hui. Il n’est peut-être pas encore aussi populaire que les autres outils, mais nous sommes convaincus qu’il suscitera un énorme succès dans les années à venir. Nous pensons que les créateurs de Vagrant et Consul ont une fois de plus démontré leur savoir-faire et livré un excellent produit.
Conclusions
Étant open source, Terraform a rassemblé une communauté de développeurs forte et passionnée qui stimulent son évolution sans cesse. Nous pensons que cet outil est génial et qu’il deviendra encore meilleur et beaucoup plus populaire avec le temps. Ce ne sera pas la chute de Chef, Ansible ou Puppet, il prendra simplement la place qui lui revient dans la boîte à outils DevOps.