Dela via


Jämföra Terraform och Bicep

För att uppnå skalning letar DevOps-team alltid efter sätt att snabbt distribuera kod med en betrodd och repeterbar process. När det gäller molnet och infrastrukturen utförs den här processen i allt högre grad med IaC (infrastructure-as-code). IaC-verktyg sträcker sig från allmänna verktyg till verktyg avsedda för specifika miljöer. Terraform är ett exempel på det förra, medan Bicep är utformat för att hantera Azure-relaterade uppgifter.

I den här artikeln jämför vi nio infrastruktur- och integreringsfunktioner i Bicep och Terraform. Att förstå dessa skillnader hjälper dig att avgöra vilket verktyg som bäst stöder din infrastruktur och dina processer.

Tillstånd och serverdel

Både Terraform och Bicep är önskad tillståndskonfiguration (DSC) vilket gör det enkelt att hantera IT- och utvecklingsinfrastruktur som kod. Terraform lagrar tillstånd om din hanterade infrastruktur och konfiguration. Terraform använder den här informationen för att mappa verkliga resurser till din konfiguration, spåra metadata och förbättra prestanda för större infrastrukturer. Tillståndet lagras i en lokal fil med namnet terraform.tfstate, men kan också lagras via fjärranslutning. Det är viktigt att säkerhetskopiera och skydda dina tillståndsfiler. Liksom Terraform är Bicep deklarativ och målsökande. Bicep lagrar dock inte tillstånd. I stället förlitar sig Bicep på inkrementell distribution.

Infrastrukturmål

När du jämför Bicep med Terraform för att hantera molninfrastruktur är det viktigt att tänka på din målmolnmiljö:

  • Endast Azure
  • Flera moln eller hybridmoln

Bicep är Azure-specifik och har inte utformats för att fungera med andra molntjänster.

Om målet är att automatisera distributioner till någon av följande miljöer är Terraform sannolikt det bättre alternativet:

  • Virtualiseringsmiljöer
  • Scenarier med flera moln – till exempel Azure och andra moln
  • Lokala arbetsbelastningar

Terraform interagerar med andra molnleverantörer eller API:er med hjälp av plugin-program som kallas providers. Det finns flera Terraform Azure-leverantörer som möjliggör hantering av Azure-infrastruktur. När du kodar en Terraform-konfiguration anger du vilka leverantörer som krävs som du använder. När du kör terraform init installeras den angivna providern och kan användas från din kod.

CLI-verktyg

Cli-verktyg (Command Line Interface) spelar en nyckelroll i orkestreringen genom implementering och hantering av automatiseringsteknik. Både Bicep och Terraform erbjuder CLI-verktyg.

Bicep integreras med Azure CLI, vilket gör att utvecklare kan använda az kommandon som:

Med Terraform CLI kan du utföra uppgifter som att verifiera och formatera Terraform-koden och skapa och tillämpa en körningsplan.

Bicep innehåller också en funktion som gör det enkelt att integrera Bicep med Azure Pipelines. Det finns en liknande funktion för Terraform, men du måste ladda ned och installera Azure Pipelines Terraform Tasks-tillägget för Visual Studio. När du har installerat kan du köra Terraform CLI-kommandon från Azure Pipelines. Dessutom stöder både Terraform och Bicep GitHub Actions för att automatisera programvaruversioner, tester och distributioner.

Bearbetning

Det finns några viktiga skillnader mellan Bicep och Terraform när det gäller effektiviteten och optimeringarna av distributioner. Med Bicep sker bearbetningen på azure-infrastrukturens kärntjänstsida. Den här funktionen erbjuder fördelar som förbehandling för att kontrollera principen eller tillgängligheten för att distribuera flera instanser i en region. Med Terraform utförs bearbetningen i Terraform-klienten. Därför omfattar förbearbetning inga anrop till Azure eftersom den använder tillstånd och HCL (HashiCorp Language) för att fastställa de nödvändiga ändringarna.

Autentisering

Azure-autentiseringsfunktionerna varierar mellan Bicep och Terraform. Med Bicep tillhandahålls en auktoriseringstoken under begäran om att skicka en Bicep-fil och ARM-mall. ARM ser till att du har behörighet att både skapa distributionen och distribuera resurser i den angivna mallen. Terraform autentiserar varje API baserat på providerautentiseringsuppgifter – till exempel Azure CLI, tjänstens huvudnamn eller hanterade identiteter för Azure-resurser. Dessutom kan flera autentiseringsuppgifter för providern användas i en enda konfiguration.

Azure-integreringar

Du bör också överväga att använda Azure-funktioner som Azure Policy och hur var och en interagerar med andra verktyg och språk. Biceps preflight-validering avgör om en resurs inte följer en princip så att den misslyckas före en distribution. Utvecklare kan därför åtgärda resurser med principer med hjälp av tillhandahållna ARM-mallar. ARM-mallen kan användas för att skapa en principtilldelning till en annan resurs för automatisk reparation. Terraform misslyckas dock när en resurs distribueras som inte tillåts på grund av principen.

Portalintegrering

En stor fördel som Bicep har jämfört med Terraform är möjligheten att automatisera portalåtgärder. Med Bicep kan du använda Azure-portalen för att exportera mallar. När du exporterar en mall kan du förstå syntaxen och egenskaperna som distribuerar dina resurser. Du kan automatisera framtida distributioner genom att börja med den exporterade mallen och ändra den efter dina behov. Tills Terraform-mallar stöds måste du översätta den exporterade mallen manuellt.

Även om Terraform inte tillhandahåller samma portalintegreringar som Bicep, kan befintlig Azure-infrastruktur tas under Terraform-hantering med hjälp av Azure Export for Terraform. (Azure Export for Terraform är ett verktyg med öppen källkod som ägs och underhålls av Microsoft på Azure/aztfexport GitHub-lagringsplats.)

Out-of-band-ändringar

Ändringar i out-of-band-konfigurationen är ändringar som görs i en enhetskonfiguration utanför verktygets kontext. Anta till exempel att du distribuerar en VM-skalningsuppsättning med Bicep eller Terraform. Om du ändrar vm-skalningsuppsättningen med hjälp av portalen blir ändringen "out-of-band" och okänd för ditt IaC-verktyg.

Om du använder Bicep bör out-of-band-ändringar stämmas av med Bicep och ARM-mallkoden för att undvika att ändringarna skrivs över vid nästa distribution. Dessa ändringar blockerar inte distributionen.

Om du använder Terraform måste du importera out-of-band-ändringarna till Terraform-tillståndet och uppdatera HCL:n.

Om en miljö innebär frekventa out-of-band-ändringar är Bicep därför mer användarvänligt. När du använder Terraform bör du minimera out-of-band-ändringar.

Molnramverk

Cloud Adoption Framework (CAF) är en samling dokumentation, metodtips och verktyg för att påskynda molnimplementeringen under hela molnresan. Azure tillhandahåller interna tjänster för distribution av landningszoner. Bicep förenklar den här processen med en portalupplevelse baserad på ARM-mallar och implementering av landningszoner. Terraform använder modulen Landningszoner i företagsskala för att distribuera, hantera och operationalisera med Azure.

Sammanfattning

Bicep och Terraform erbjuder många användarvänliga infrastruktur- och integreringsfunktioner. De här funktionerna gör det enklare att implementera och hantera automatiseringsteknik. När du bestämmer vad som är bäst för din miljö är det viktigt att tänka på om du distribuerar till mer än ett moln eller om infrastrukturen består av en miljö med flera eller hybridmoln. Se dessutom till att överväga de nio funktioner som beskrivs i den här artikeln för att göra det bästa valet för din organisation.