Konfiguration og scripting af terraform
I dette undermodul kigger vi på Terraform-konfiguration og scripting.
Hvorfor Terraform?
Som infrastrukturadministrator skal du bruge et værktøj til klargøring og administration af Azure-infrastruktur. Du vil også bruge infrastruktur som kode i konfigurationsfiler, der beskriver topologien for dine Azure-ressourcer.
HashiCorp Terraform er fantastisk til at udrulle infrastruktur på tværs af cloududbydere. Det giver udviklere ensartede værktøjer til at administrere hver infrastrukturdefinition.
Automatiser administration af infrastruktur
Ved hjælp af skabelonbaserede Terraform-konfigurationsfiler kan du definere, klargøre og konfigurere Azure-ressourcer på en gentagelig og forudsigelig måde. Denne automatisering giver flere fordele:
- Det reducerer risikoen for menneskelige fejl, når den udruller og administrerer infrastruktur.
- Den udruller den samme skabelon flere gange for at oprette identiske udviklings-, test- og produktionsmiljøer.
- Det reducerer omkostningerne ved udviklings- og testmiljøer ved at oprette dem efter behov.
Forstå infrastrukturændringer, før de anvendes
Efterhånden som en ressourcetopologi bliver mere og mere kompleks, kan det være svært at forstå betydningen og effekten af infrastrukturændringer.
Ved hjælp af Terraform kan du validere og få forhåndsvist infrastrukturændringer, før du anvender dem. Gruppemedlemmer kan samarbejde mere effektivt ved at forstå de foreslåede ændringer og deres virkning tidligt i udviklingsprocessen.
Konfigurationsfiler til Terraform
Konfigurationsfiler genererer en udførelsesplan, og hvad planen vil gøre for at nå den ønskede tilstand. Terraform kan derefter bygge den beskrevne infrastruktur. I takt med at konfigurationen ændres, kan Terraform bestemme, hvad der er ændret, og oprette planer for trinvis udførelse.
Terraform-konfigurationsfiler bruger deres eget konfigurationssprog, der ligner YAML, og som er designet til at tillade en beskrivelse af infrastrukturen.
Du opretter konfigurationsfiler ved hjælp af HCL-syntaksen (HashiCorp Configuration Language). HCL er deklarativ og beskriver et bestemt mål i stedet for de trin, der skal bruges til at nå dette mål. Med HCL-syntaksen kan du angive cloududbyderen, f.eks. Azure, og de elementer, der udgør din cloudinfrastruktur.
Konfigurationsfilerne gemmes som almindelige tekstfiler med filtypenavnet .tf. De er:
- main.tf: (påkrævet) Definerer hovedstrukturen og udruller den komplette infrastruktur direkte eller via kald til moduler
- outputs.tf: Identificerer hver returværdi i et Terraform-modul
- variables.tf: Definerer variablerne i main.tf, uanset om de er påkrævede eller ej
Moduler
Du kan gruppere Terraform-ressourcer i et modul, hvilket opretter en større konfigurationsenhed. Disse moduler er sæt konfigurationsfiler, der er gemt i en enkelt mappe. En simpel konfiguration består af en enkelt mappe med en eller flere .tf--filer.
Moduler giver mange fordele. F.eks. moduler:
- Hjælp med at organisere dit projekt.
- Indkapsling af kompleksitet.
- Giver dig mulighed for at genbruge almindelige opgaver.
- Sørg for konsistens, og sørg for, at du følger god praksis.
Filen main.tf
Din main.tf-fil indeholder det primære sæt konfigurationsoplysninger for dit modul. Denne fil kaldes ofte en Terraform-plan. Din Terraform-plan angiver de infrastrukturressourcer, du har brug for. Du kan navngive filen, som du vil, men den kaldes normalt main.tf.
Terraform-arbejdsproces
Terraform anbefaler sin kernearbejdsproces "initialiser, planlæg og anvend" til automatisering. Denne arbejdsproces kører alle Terraform CI/CD-handlinger på nye og opdaterede Git-pullanmodninger.
De vigtigste handlinger for denne arbejdsproces er:
- Init: Initialiser en arbejdsmappe med Terraform-konfigurationsfiler
- Plan: Opret en plan for ændring af ressourcer, så de stemmer overens med den aktuelle konfiguration
- Anvend: Anvend de ændringer, der er beskrevet i planen
Stat
State gør det muligt for Terraform at vide, hvilke Azure-ressourcer der skal tilføjes, opdateres eller slettes.
Terraform bruger tilstanden til at oprette planer og foretage ændringer i din infrastruktur. Før en handling udfører Terraform en opdatering for at opdatere tilstanden med den reelle infrastruktur.
Tilstand gemmes som standard i en lokal tekstfil med navnet terraform.tfstate. Terraform administrerer denne fil ved hjælp af de arbejdsproceshandlinger, du definerer i dine moduler.
Du kan også gemme tilstanden eksternt, en tilgang, der fungerer bedre i et teammiljø. Du kan få flere oplysninger om fjernadministration af tilstand i oversigtsenheden i slutningen af dette modul.
Næste trin
I det næste undermodul diskuterer vi brugen af Terraform med enten GitHub-handlinger eller Azure Pipelines for at klargøre og udrulle dine programmer.