Comparaison de Terraform et Bicep

Pour obtenir une mise à l’échelle, les équipes DevOps recherchent toujours des moyens de déployer rapidement du code avec un processus fiable et reproductible. En ce qui concerne le cloud et l’infrastructure, ce processus s’effectue de plus en plus avec l’infrastructure en tant que code (IaC). Les outils IaC vont des outils à usage général aux outils destinés à des environnements spécifiques. Terraform est un exemple de l’ancien, tandis que Bicep est conçu pour gérer les tâches liées à Azure.

Dans cet article, nous comparons neuf fonctionnalités d’infrastructure et d’intégration de Bicep et Terraform. La compréhension de ces différences vous aide à déterminer l’outil qui prend le mieux en charge votre infrastructure et vos processus.

État et back-end

Terraform et Bicep sont à la fois une configuration d’état souhaité (DSC) qui facilite la gestion de l’infrastructure informatique et de développement en tant que code. Terraform stocke l’état de votre infrastructure managée et de votre configuration. Terraform utilise ces informations pour mapper les ressources réelles à votre configuration, suivre les métadonnées et améliorer les performances des infrastructures plus volumineuses. L’état est stocké dans un fichier local nommé terraform.tfstate, mais peut également être stocké à distance. Il est essentiel de sauvegarder et de sécuriser vos fichiers d’état. Comme Terraform, Bicep est déclaratif et recherché par l’objectif. Toutefois, Bicep ne stocke pas l’état. Au lieu de cela, Bicep s’appuie sur le déploiement incrémentiel.

Cibles d’infrastructure

Lorsque vous comparez Bicep à Terraform pour la gestion de l’infrastructure cloud, il est important de prendre en compte votre environnement cloud cible :

  • Azure uniquement
  • Clouds multiples ou hybrides

Bicep est spécifique à Azure et n’est pas conçu pour fonctionner avec d’autres services cloud.

Si votre objectif est d’automatiser les déploiements dans l’un des environnements suivants, Terraform est probablement la meilleure option :

  • Environnements de virtualisation
  • Scénarios multiclouds, tels qu’Azure et d’autres clouds
  • Charges de travail locales

Terraform interagit avec d’autres fournisseurs de cloud ou API à l’aide de plug-ins appelés fournisseurs. Il existe plusieurs fournisseurs Terraform Azure qui permettent la gestion de l’infrastructure Azure. Lors du codage d’une configuration Terraform, vous spécifiez les fournisseurs requis que vous utilisez. Lorsque vous exécutez terraform init, le fournisseur spécifié est installé et utilisable à partir de votre code.

Outils CLI

Les outils CLI (Command Line Interface) jouent un rôle clé dans l’orchestration par le biais de l’implémentation et de la gestion de la technologie d’automatisation. Bicep et Terraform offrent des outils CLI.

Bicep s’intègre à Azure CLI, ce qui permet aux développeurs d’utiliser az des commandes telles que :

L’interface CLI Terraform vous permet d’effectuer des tâches telles que valider et mettre en forme votre code Terraform, et créer et appliquer un plan d’exécution.

Bicep fournit également une fonctionnalité qui facilite l’intégration de Bicep à Azure Pipelines. Il existe une fonctionnalité similaire disponible pour Terraform, mais vous devez télécharger et installer l’extension Azure Pipelines Terraform Tasks pour Visual Studio. Une fois installé, vous pouvez exécuter des commandes Cli Terraform à partir d’Azure Pipelines. De plus, Terraform et Bicep prennent en charge GitHub Actions pour automatiser les builds logicielles, les tests et les déploiements.

Traitement

Il existe des différences importantes entre Bicep et Terraform en termes d’efficacité et d’optimisation des déploiements. Avec Bicep, le traitement se produit dans le côté principal du service d’infrastructure Azure. Cette fonctionnalité offre des avantages tels que le traitement préliminaire pour case activée stratégie ou la disponibilité pour le déploiement de plusieurs instances dans une région. Avec Terraform, le traitement est effectué dans le client Terraform. Par conséquent, le prétraitement n’implique aucun appel à Azure, car il utilise l’état et le HCL (HashiCorp Language) pour déterminer les modifications requises.

Authentification

Les fonctionnalités d’authentification Azure varient entre Bicep et Terraform. Avec Bicep, un jeton d’autorisation est fourni pendant la demande d’envoi d’un fichier Bicep et d’un modèle ARM. ARM garantit que vous êtes autorisé à créer le déploiement et à déployer des ressources dans le modèle spécifié. Terraform authentifie chaque API en fonction des informations d’identification du fournisseur, telles qu’Azure CLI, le principal de service ou les identités managées pour les ressources Azure. De plus, plusieurs informations d’identification du fournisseur peuvent être utilisées dans une configuration unique.

Intégrations Azure

Vous devez également envisager votre utilisation des fonctionnalités Azure telles qu’Azure Policy et la façon dont chacune interagit avec d’autres outils et langages. La validation préliminaire de Bicep détermine si une ressource ne se conforme pas à une stratégie afin qu’elle échoue avant un déploiement. Par conséquent, les développeurs peuvent corriger les ressources avec une stratégie à l’aide de modèles ARM fournis. Le modèle ARM peut être utilisé pour créer une affectation de stratégie à une autre ressource pour la correction automatisée. Terraform échoue toutefois lorsqu’une ressource est déployée qui n’est pas autorisée en raison d’une stratégie.

Intégration au portail

L’un des principaux avantages que Bicep a sur Terraform est la possibilité d’automatiser les actions du portail. Avec Bicep, vous pouvez utiliser la Portail Azure pour exporter des modèles. L’exportation d’un modèle vous aide à comprendre la syntaxe et les propriétés qui déploient vos ressources. Vous pouvez automatiser les déploiements futurs en commençant par le modèle exporté et en le modifiant pour répondre à vos besoins. Tant que les modèles Terraform ne sont pas pris en charge, vous devez traduire le modèle exporté manuellement.

Bien que Terraform ne fournisse pas les mêmes intégrations de portail que Bicep, l’infrastructure Azure existante peut être prise sous gestion Terraform à l’aide d’Azure Export pour Terraform. (Azure Export pour Terraform est un outil open source détenu et géré par Microsoft sur le site Dépôt GitHub Azure/aztfexport.)

Modifications hors bande

Les modifications de configuration hors bande sont apportées à une configuration d’appareil en dehors du contexte de l’outil. Par exemple, supposons que vous déployez un groupe de machines virtuelles identiques à l’aide de Bicep ou Terraform. Si vous modifiez ce groupe de machines virtuelles identiques à l’aide du portail, la modification est « hors bande » et inconnue de votre outil IaC.

Si vous utilisez Bicep, les modifications hors bande doivent être rapprochées de Bicep et du code de modèle ARM pour éviter que ces modifications soient remplacées lors du prochain déploiement. Ces modifications ne bloquent pas le déploiement.

Si vous utilisez Terraform, vous devez importer les modifications hors bande dans l’état Terraform et mettre à jour la liste HCL.

Par conséquent, si un environnement implique des changements fréquents hors bande, Bicep est plus convivial. Lorsque vous utilisez Terraform, vous devez réduire les modifications hors bande.

Frameworks cloud

Le Framework d’adoption du cloud (CAF) est une collection de documentation, de bonnes pratiques et d’outils pour accélérer l’adoption du cloud tout au long de votre parcours cloud. Azure fournit des services natifs pour le déploiement de zones d’atterrissage. Bicep simplifie ce processus avec une expérience de portail basée sur les modèles ARM et l’implémentation de zone d’atterrissage. Terraform utilise un module Zones d’atterrissage à l’échelle de l’entreprise pour déployer, gérer et opérationnaliser avec Azure.

Résumé

Bicep et Terraform offrent de nombreuses fonctionnalités d’intégration et d’infrastructure conviviales. Ces fonctionnalités facilitent l’implémentation et la gestion de la technologie d’automatisation. Lorsque vous décidez de ce qui convient le mieux à votre environnement, il est important de prendre en compte si vous effectuez un déploiement sur plusieurs clouds ou si votre infrastructure se compose d’un environnement multicloud ou hybride. En outre, veillez à prendre en compte les neuf fonctionnalités présentées dans cet article pour faire le meilleur choix pour votre organisation.