Infrastruktur som kod

Squeeds Julkalender | 2023-12-16 | Sofia Lindgren
En kort introduktion till infrastruktur som kod med verktygen Azure Bicep & HashiCorp Terraform

Infrastructure as Code med Bicep & Terraform

Logo of Bicep and Terraform

Vad är IaC?

Infrastructure as Code är ett sätt att hantera och distribuera infrastruktur genom kod istället för manuella processer. Detta gör det möjligt att automatisera och standardisera processer för att skapa och hantera olika IT-resurser, såsom nätverk, databaser och servrar.

Fördelarna med IaC är bland annat att man använder versionshantering, då filerna som innehåller ens konfigurationer använder source control (till exempel Git) precis som vilken annan del av ens kod som helst. Detta gör att man kan spåra förändringar av infrastrukturen över tid och ger ökad transparens, underlättar samarbete och möjliggör enkel återgång till tidigare konfigurationer om det behövs.

Andra fördelar är att man minimerar manuellt arbete, ökar hastigheten på implementeringar och minskar risken för fel. Man gör det möjligt att skapa konsistenta miljöer över olika stadier (utveckling, testning, produktion). Det blir lätt att reproducera exakta konfigurationer och undvika konflikter och variationer.

Många organisationer använder IaC för att det är kostnadseffektivt, skalbart och snabbt låter en distribuera nya förändringar i infrastrukturen.

Det finns en mängd olika verktyg för IaC, två populära är Azure Bicep och HashiCorp Terraform.

Bicep

Bicep är ett domänspecifikt språk utvecklat av Microsoft som används för att distribuera Azure resurser. Det bygger vidare på ARM-templates (Azure Resource Manager Templates) vilket i sig skrivs i JSON-format, Bicep-filer kompileras till ARM-templates när man kör dem. 

Ett av syftena med Bicep är att vara ett enklare, mindre komplext och mer läsbart alternativ till att skriva ARM-templates.

Som IaC-verktyg är Biceps begränsade till Azures molntjänster.

Terraform

Terraform är ett open-source verktyg utvecklat av Hashi Corp som är en AWS partner. Med Terraform är man inte begränsad till en molntjänst, utan kan användas för att hantera och distribuera infrastruktur i olika moln miljöer och hybridmoln miljöer, till exempel Azure, AWS, Google Cloud.

Språket Terraform använder kallas HashiCorp Configuration Language (HCL), vilket också är läsbart och enkelt att skriva.

Vilket ska jag använda?

Valet mellan Bicep och Terraform beror på olika faktorer, vad man föredrar, befintlig bekantskap med verktygen och specifika krav för projektet.. Använder man sig av en annan miljö än Azure eller har en komplex infrastruktur som sträcker sig över flera moln blir valet enkelt, Terraform. 

Har man sin infrastruktur i Azure finns båda alternativen tillgängliga, men Bicep är specifikt utformat för Azure, vilket innebär att det erbjuder en nära integration med Azure-tjänster. Detta kan leda till en smidigare upplevelse när du arbetar med Azure-specifika resurser.

 

Läs mer om Bicep och Terraform

https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/

https://developer.hashicorp.com/terraform/docs