Terraform en Bicep vergelijken

Om schaal te bereiken, zijn DevOps-teams altijd op zoek naar manieren om snel code te implementeren met een vertrouwd en herhaalbaar proces. Als het gaat om de cloud en infrastructuur, wordt dit proces steeds vaker uitgevoerd met infrastructure-as-code (IaC). IaC-hulpprogramma's variëren van hulpprogramma's voor algemeen gebruik tot hulpprogramma's die zijn bedoeld voor specifieke omgevingen. Terraform is een voorbeeld van de voormalige, terwijl Bicep is ontworpen voor het afhandelen van Azure-gerelateerde taken.

In dit artikel vergelijken we negen infrastructuur- en integratiefuncties van Bicep en Terraform. Als u deze verschillen begrijpt, kunt u bepalen welk hulpprogramma het beste ondersteuning biedt voor uw infrastructuur en processen.

Status en back-end

Zowel Terraform als Bicep zijn de gewenste statusconfiguratie (DSC) waarmee u de IT- en ontwikkelingsinfrastructuur eenvoudig als code kunt beheren. Terraform slaat de status van uw beheerde infrastructuur en configuratie op. Terraform gebruikt deze informatie om echte resources toe te wijzen aan uw configuratie, metagegevens bij te houden en de prestaties van grotere infrastructuren te verbeteren. De status wordt opgeslagen in een lokaal bestand met de naamterraform.tfstate, maar kan ook extern worden opgeslagen. Het is essentieel om een back-up te maken van uw statusbestanden en deze te beveiligen. Net als Terraform is Bicep declaratief en doelzoekend. Bicep slaat de status echter niet op. In plaats daarvan is Bicep afhankelijk van incrementele implementatie.

Infrastructuurdoelen

Wanneer u Bicep vergelijkt met Terraform voor het beheren van de cloudinfrastructuur, is het belangrijk om rekening te houden met uw doelcloudomgeving:

  • Alleen Azure
  • Multi- of hybride clouds

Bicep is specifiek voor Azure en is niet ontworpen voor gebruik met andere cloudservices.

Als u implementaties in een van de volgende omgevingen wilt automatiseren, is Terraform waarschijnlijk de beste optie:

  • Virtualisatieomgevingen
  • Scenario's met meerdere clouds, zoals Azure en andere cloud(s)
  • On-premises workloads

Terraform communiceert met andere cloudproviders of API's met behulp van invoegtoepassingen die providers worden genoemd. Er zijn verschillende Terraform Azure-providers die het beheer van de Azure-infrastructuur mogelijk maken. Bij het coderen van een Terraform-configuratie geeft u de vereiste providers op die u gebruikt. Wanneer u terraform init uitvoert, wordt de opgegeven provider geïnstalleerd en bruikbaar vanuit uw code.

CLI-hulpprogramma's

Cli-hulpprogramma's (Opdrachtregelinterface) spelen een belangrijke rol bij de indeling via de implementatie en het beheer van automatiseringstechnologie. Bicep en Terraform bieden CLI-hulpprogramma's.

Bicep kan worden geïntegreerd met Azure CLI, zodat ontwikkelaars opdrachten kunnen gebruiken az , zoals:

Met de Terraform CLI kunt u taken uitvoeren zoals het valideren en opmaken van uw Terraform-code en het maken en toepassen van een uitvoeringsplan.

Bicep biedt ook een functie waarmee Bicep eenvoudig kan worden geïntegreerd met Azure Pipelines. Er is een vergelijkbare functie beschikbaar voor Terraform, maar u moet de extensie Azure Pipelines Terraform Tasks voor Visual Studio downloaden en installeren. Nadat de installatie is uitgevoerd, kunt u Terraform CLI-opdrachten uitvoeren vanuit Azure Pipelines. Bovendien ondersteunen Terraform en Bicep GitHub Actions om software-builds, tests en implementaties te automatiseren.

Verwerken

Er zijn enkele belangrijke verschillen tussen Bicep en Terraform wat betreft de efficiëntie en optimalisatie van implementaties. Met Bicep vindt de verwerking plaats binnen de azure-kerninfrastructuurservicezijde. Deze functie biedt voordelen zoals voorbereidende verwerking om het beleid te controleren of de beschikbaarheid voor het implementeren van meerdere exemplaren binnen een regio. Met Terraform wordt de verwerking uitgevoerd binnen de Terraform-client. Voorverwerking omvat dus geen aanroepen naar Azure omdat deze gebruikmaakt van status en HCL (HashiCorp Language) om de vereiste wijzigingen te bepalen.

Verificatie

De Azure-verificatiefuncties variëren tussen Bicep en Terraform. Met Bicep wordt een autorisatietoken opgegeven tijdens de aanvraag om een Bicep-bestand en EEN ARM-sjabloon in te dienen. ARM zorgt ervoor dat u gemachtigd bent om de implementatie te maken en resources binnen de opgegeven sjabloon te implementeren. Terraform verifieert elke API op basis van providerreferenties, zoals Azure CLI, service-principal of beheerde identiteiten voor Azure-resources. Bovendien kunnen meerdere providerreferenties in één configuratie worden gebruikt.

Azure-integraties

U moet ook rekening houden met uw gebruik van Azure-functies, zoals Azure Policy en hoe elk werkt met andere hulpprogramma's en talen. De voorbereidende validatie van Bicep bepaalt of een resource niet voldoet aan een beleid, zodat deze mislukt voordat een implementatie wordt uitgevoerd. Ontwikkelaars kunnen dus resources herstellen met beleid met behulp van opgegeven ARM-sjablonen. De ARM-sjabloon kan worden gebruikt om een beleidstoewijzing te maken voor een andere resource voor geautomatiseerd herstel. Terraform mislukt echter wanneer een resource wordt geïmplementeerd die niet is toegestaan vanwege beleid.

Portalintegratie

Een belangrijk voordeel dat Bicep heeft ten opzichte van Terraform, is de mogelijkheid om portalacties te automatiseren. Met Bicep kunt u Azure Portal gebruiken om sjablonen te exporteren. Als u een sjabloon exporteert, krijgt u inzicht in de syntaxis en eigenschappen waarmee uw resources worden geïmplementeerd. U kunt toekomstige implementaties automatiseren door te beginnen met de geëxporteerde sjabloon en deze aan te passen aan uw behoeften. Totdat Terraform-sjablonen worden ondersteund, moet u de geëxporteerde sjabloon handmatig vertalen.

Hoewel Terraform niet dezelfde portalintegraties biedt als Bicep, kan de bestaande Azure-infrastructuur worden gebruikt onder Terraform-beheer met behulp van Azure Export voor Terraform. (Azure Export voor Terraform is een opensource-hulpprogramma dat eigendom is van en wordt onderhouden door Microsoft op de Azure/aztfexport GitHub-opslagplaats.)

Out-of-bandwijzigingen

Out-of-band-configuratiewijzigingen zijn wijzigingen in een apparaatconfiguratie buiten de context van het hulpprogramma. Stel dat u een virtuele-machineschaalset implementeert met Bicep of Terraform. Als u die virtuele-machineschaalset wijzigt met behulp van de portal, is de wijziging 'out-of-band' en onbekend in uw IaC-hulpprogramma.

Als u Bicep gebruikt, moeten out-of-band-wijzigingen worden afgestemd op Bicep en de ARM-sjablooncode om te voorkomen dat deze wijzigingen tijdens de volgende implementatie worden overschreven. Deze wijzigingen blokkeren de implementatie niet.

Als u Terraform gebruikt, moet u de out-of-band-wijzigingen importeren in de Terraform-status en de HCL bijwerken.

Dus als een omgeving frequent out-of-band wijzigingen omvat, is Bicep gebruiksvriendelijker. Wanneer u Terraform gebruikt, moet u out-of-band-wijzigingen minimaliseren.

Cloudframeworks

Het Cloud Adoption Framework (CAF) is een verzameling documentatie, best practices en hulpprogramma's om de cloudimplementatie tijdens uw cloudtraject te versnellen. Azure biedt systeemeigen services voor het implementeren van landingszones. Bicep vereenvoudigt dit proces met een portalervaring op basis van ARM-sjablonen en implementatie van landingszones. Terraform maakt gebruik van een Enterprise-Scale Landing Zones-module om Azure te implementeren, beheren en operationeel te maken.

Samenvatting

Bicep en Terraform bieden veel gebruiksvriendelijke infrastructuur- en integratiefuncties. Deze functies maken het eenvoudiger om automatiseringstechnologie te implementeren en te beheren. Wanneer u besluit welke het beste is voor uw omgeving, is het belangrijk om te overwegen of u implementeert in meer dan één cloud of dat uw infrastructuur bestaat uit een omgeving met meerdere of hybride clouds. Houd bovendien rekening met de negen functies die in dit artikel worden besproken om de beste keuze te maken voor uw organisatie.