Terraform-konfiguration och skript
I den här lektionen tittar vi på Terraform-konfiguration och skript.
Varför Terraform?
Som infrastrukturhanterare behöver du ett verktyg för att etablera och hantera Azure-infrastruktur. Du vill också använda infrastruktur som kod i konfigurationsfiler som beskriver topologin för dina Azure-resurser.
HashiCorp Terraform är bra på att distribuera infrastruktur mellan molnleverantörer. Det ger utvecklare konsekventa verktyg för att hantera varje infrastrukturdefinition.
Automatisera infrastrukturhantering
Genom att använda mallbaserade Terraform-konfigurationsfiler kan du definiera, etablera och konfigurera Azure-resurser på ett repeterbart och förutsägbart sätt. Den här automatiseringen erbjuder flera fördelar:
- Det minskar risken för mänskliga fel när den distribuerar och hanterar infrastruktur.
- Den distribuerar samma mall flera gånger för att skapa identiska utvecklings-, test- och produktionsmiljöer.
- Det minskar kostnaderna för utvecklings- och testmiljöer genom att skapa dem på begäran.
Förstå infrastrukturändringar innan de tillämpas
När en resurstopologi blir alltmer komplex kan det vara svårt att förstå innebörden och effekten av infrastrukturändringar.
Genom att använda Terraform kan du verifiera och förhandsgranska infrastrukturändringar innan du tillämpar dem. Teammedlemmar kan samarbeta mer effektivt genom att förstå de föreslagna ändringarna och deras effekt tidigt i utvecklingsprocessen.
Terraform-konfigurationsfiler
Konfigurationsfiler genererar en körningsplan och vad planen kommer att göra för att nå önskat tillstånd. Terraform kan sedan skapa den beskrivna infrastrukturen. När konfigurationen ändras kan Terraform avgöra vad som har ändrats och skapa inkrementella körningsplaner.
Terraform-konfigurationsfiler använder ett eget konfigurationsspråk som liknar YAML som är utformat för att tillåta en beskrivning av infrastrukturen.
Du skapar konfigurationsfiler med hjälp av HashiCorp Configuration Language (HCL) syntax. HCL är deklarativ och beskriver ett avsett mål snarare än stegen för att nå det målet. Med HCL-syntax kan du ange molnleverantören, till exempel Azure, och de element som utgör din molninfrastruktur.
Konfigurationsfilerna lagras som oformaterade textfiler med ett .tf-tillägg . Dessa är:
- main.tf: (krävs) Definierar huvudstrukturen, distribuerar den fullständiga infrastrukturen direkt eller via anrop till moduler
- outputs.tf: Identifierar varje returvärde för en Terraform-modul
- variables.tf: Definierar variablerna i main.tf, oavsett om de krävs eller inte
Moduler
Du kan gruppera Terraform-resurser i en modul, vilket skapar en större konfigurationsenhet. Dessa moduler är uppsättningar med konfigurationsfiler som lagras i en enda katalog. En enkel konfiguration består av en enda katalog med en eller flera .tf-filer .
Moduler erbjuder många fördelar. Till exempel moduler:
- Hjälp med att organisera projektet.
- Kapsla in komplexitet.
- Gör att du kan återanvända vanliga uppgifter.
- Ge konsekvens och se till att du följer god praxis.
Filen main.tf
Din main.tf-fil innehåller huvuduppsättningen med konfigurationsinformation för modulen. Den här filen kallas ofta för en Terraform-plan. Terraform-planen anger de infrastrukturresurser som du behöver. Du kan namnge den här filen vad du vill, men den heter vanligtvis main.tf.
Terraform-arbetsflöde
Terraform rekommenderar sitt kärnarbetsflöde "initiera, planera och tillämpa" för automatisering. Det här arbetsflödet kör alla Terraform CI/CD-åtgärder på nya och uppdaterade Git-pull-begäranden.
De viktigaste åtgärderna för det här arbetsflödet är:
- Init: Initiera en arbetskatalog med Terraform-konfigurationsfiler
- Plan: Skapa en plan för att ändra resurser så att den matchar den aktuella konfigurationen
- Tillämpa: Tillämpa ändringarna som beskrivs i planen
Tillstånd
Med tillståndet kan Terraform veta vilka Azure-resurser som ska läggas till, uppdateras eller tas bort.
Terraform använder tillstånd för att skapa planer och göra ändringar i infrastrukturen. Innan någon åtgärd gör Terraform en uppdatering för att uppdatera tillståndet med den verkliga infrastrukturen.
Tillståndet lagras som standard i en lokal textfil med namnet terraform.tfstate. Terraform hanterar den här filen med hjälp av de arbetsflödesåtgärder som du definierar i dina moduler.
Du kan också lagra tillstånd via fjärranslutning, en metod som fungerar bättre i en teammiljö. Mer information om fjärrhantering av tillstånd finns i sammanfattningsenheten i slutet av den här modulen.
Nästa steg
I nästa lektion diskuterar vi att använda Terraform med antingen GitHub Actions eller Azure Pipelines för att etablera och distribuera dina program.