Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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. Quand il s’agit du cloud et de l’infrastructure, vous pouvez de plus en plus accomplir ce processus 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 backend
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 vous pouvez également le stocker à distance. Il est essentiel de sauvegarder et de sécuriser vos fichiers d’état. À l’instar de Terraform, Bicep est déclaratif et axé sur les objectifs. Cependant, 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, tenez compte de 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 que 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. Plusieurs fournisseurs terraform Azure permettent la gestion de l’infrastructure Azure. Lorsque vous codez 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 d’interface de ligne de commande (CLI) 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 :
-
az bicep: les commandes az bicep vous permettent d’effectuer des tâches telles que l’installation de Bicep et la création et la publication de fichiers Bicep. -
az deployment: L’article Guide pratique pour déployer des ressources avec Bicep et Azure CLI explique comment utiliser Azure CLI avec des fichiers Bicep pour déployer vos ressources sur Azure.
L’interface CLI Terraform vous permet d’effectuer des tâches telles que la validation et la mise en forme de votre code Terraform, ainsi que la création et l’application d’un plan d’exécution.
- L’article Démarrage rapide : Créer un groupe de ressources Azure à l’aide de Terraform vous montre comment utiliser plusieurs commandes Terraform pour créer un groupe de ressources Azure.
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 vérifier la stratégie ou la disponibilité du 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, vous fournissez un jeton d’autorisation 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. En outre, vous pouvez utiliser plusieurs informations d’identification de fournisseur dans une configuration unique.
Intégrations Azure
Considérez votre utilisation de Azure fonctionnalités telles que Azure Policy et la façon dont chaque outil interagit avec d’autres outils et langages. La validation préalable de Bicep détermine si une ressource est conforme à une stratégie afin qu’elle échoue avant un déploiement. Ainsi, les développeurs peuvent corriger des ressources à l’aide d’une stratégie en utilisant les modèles ARM fournis. Vous pouvez utiliser le modèle ARM 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 du 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 le 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, vous pouvez prendre l'infrastructure Azure existante sous gestion Terraform à l'aide de Azure Export for Terraform. (Azure Export pour Terraform est un outil open source détenu et géré par Microsoft sur le dépôt GitHub Azure/aztfexport.)
Modifications hors bande
Les modifications de configuration hors bande sont des modifications que vous apportez à une configuration d’appareil en dehors du contexte de l’outil. Par exemple, supposons que vous déployez un Virtual Machine Scale Set à l’aide de Bicep ou Terraform. Si vous modifiez ce Virtual Machine Scale Set à l’aide du portail, la modification est « hors bande » et inconnue de votre outil IaC.
Si vous utilisez Bicep, rapprochez les modifications hors bande avec Bicep et le code de modèle ARM pour éviter de remplacer ces modifications lors du déploiement suivant. Ces modifications ne bloquent pas le déploiement.
Si vous utilisez Terraform, importez dans l’état de Terraform les modifications effectuées en dehors de Terraform et mettez à jour la configuration HCL.
Note
Les conversions de comptes stockage Azure peuvent introduire des modifications prises en charge effectuées hors bande qui amènent Terraform à planifier le remplacement d’un compte de stockage. Pour obtenir des conseils sur la façon d’éviter une recréation inattendue lors de ces conversions, consultez Empêcher la dérive de Terraform pour les ressources Azure avec état.
Par conséquent, si un environnement implique des changements fréquents hors bande, Bicep est plus convivial. Lorsque vous utilisez Terraform, réduisez les modifications hors bande.
Frameworks de 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 moduleEnterprise-Scale Zones d’atterrissage 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 l’outil le mieux adapté à votre environnement, déterminez si vous déployez sur plusieurs clouds ou si votre infrastructure se compose d’un environnement cloud multicloud ou hybride. Considérez également les neuf fonctionnalités décrites dans cet article pour faire le meilleur choix pour votre organisation.