Terraform State Management

Terraform State Management



Infrastruktur som kode er proceduren til styring og klargøring af it-infrastrukturen gennem kode, som hjælper med at overvinde kompleksiteten ved storstilet levering og styring af it-ressourcerne manuelt og gentagne gange. Terraform af HashiCorp er et open source IaC-værktøj, der bruger et tilstandsstyringssystem til at spore ændringer og administrere tilstandsfilerne. Dets statsstyringssystem er en af ​​dets nøglefunktioner og hjælper med at holde styr på infrastrukturændringer effektivt. Denne artikel dykker ned i, hvordan Terraform-statsledelsen fungerer, og hvordan man bruger den effektivt.

Terraform stat

Den aktuelle tilstand af vores infrastruktur, som omfatter oplysninger om de ressourcer, som vi definerer i vores kode, registreres som Terraform-tilstand. Terraform bruger denne tilstand til at bestemme de ændringer, der er nødvendige for at bringe vores infrastruktur i den ønskede tilstand, når en kommando som Terraform 'anvend' udføres. Efter at have udført ændringerne (opret, modificer og slet), opdaterer Terraform tilstandsfilen med den nye tilstand for din infrastruktur.

For klart at forstå konceptet, lad os tage et eksempel:







ressource 'lokal_fil' 'John' {

filnavn = '/home/John.txt'

indhold = 'Jeg elsker kæledyr'

}

Her opretter vi en Terraform-fil kaldet 'main.tf'. Inde i den er en ressource af typen local_file ved navn 'John' med to attributter: filnavn og indhold.



Ressourcetypen local_file bruges til at lave en fil på det lokale filsystem på den maskine, hvor Terraform kører. I dette tilfælde oprettes filen med navnet 'John.txt' i mappen '/home', og indholdet af filen er 'Jeg elsker kæledyr'.



Lad os nu udføre Terraform-flowet - Terraform init, planlægge og anvende. Når vi udfører Terraform 'apply'-kommandoen i vores projekt for første gang, opretter Terraform automatisk tilstandsfilen kaldet 'terraform.tfstate' i rodmappen til vores Terraform-projekt. Det inkluderer alle oplysninger om vores infrastrukturs aktuelle tilstand i JSON-format.





Her er tilstandsfilen for den ressource, vi oprettede:



Lad os nu sige, at vi vil fjerne den aktuelle ressource og oprette en anden ressource af tilfældig_kæledyrstype ved navn 'mit-kæledyr' med attributter - præfiks, længde og separator.

ressource 'tilfældigt_kæledyr' 'mit kæledyr' {

præfiks = 'Hr'

længde = '1'

separator = '.'

}

Her fjerner vi local_file-ressourcen og tilføjer en random_pet-ressource. Vores ønskede tilstand er kun at have random_pet ressourcen. Lad os udføre Terraform init, planlægge og anvende kommandoer.

Som vist i den foregående illustration, når vi udfører Terraform 'plan' kommandoen, viser den de handlinger, Terraform tager for at komme til den ønskede tilstand. Når vi kører Terraform 'anvend'-kommandoen, oprettes 'mit-kæledyr'-ressourcen, og 'John'-ressourcen fjernes. Tilstandsfilen opdateres også ved at ødelægge metadataene for local_file-ressourcen og tilføje metadata for random_pet-ressourcen.

Her er indholdet af den opdaterede tilstandsfil:

Hvordan virker Terraform the Manage State?

Ved hjælp af en backend administrerer Terraform staten. En backend er en fjerntjeneste eller et lokalt filsystem, som Terraform bruger til at gemme og hente tilstandsdataene. Afhængigt af vores krav kan vi vælge en passende backend.

Terraform understøtter flere indbyggede backends, herunder lokale, Amazon S3, HashiCorp Consul, Vault og Azure Storage. Vi kan også lave en tilpasset backend, hvis ingen af ​​de indbyggede muligheder opfylder behovene.

I de foregående eksempler blev tilstandsfilerne gemt i den lokale backend. Men at gemme det i en ekstern backend er den bedste praksis, da det påberåber sig samarbejde og øger sikkerheden.

Betydningen af ​​statsforvaltning

Statsstyring i værktøjer som Terraform er afgørende på grund af følgende nøglepunkter:

Bestem den aktuelle tilstand af din infrastruktur

Tilstandsfilen giver et nøjagtigt øjebliksbillede af de eksisterende ressourcer og deres aktuelle attributter. Disse data er afgørende for at forstå vores infrastruktur og sikre, at den er i den ønskede tilstand.

Spor ændringer i infrastrukturen over tid

Hver gang vi anvender ændringerne ved hjælp af Terraform, opdateres tilstandsfilen for at afspejle den nye tilstand af vores infrastruktur. Dette gør os i stand til at spore, hvordan vores infrastruktur har udviklet sig og giver et revisionsspor for alle ændringer.

Automatisering

Ved at definere din ønskede infrastrukturtilstand i kode gør det os i stand til at automatisere oprettelsen og styringen af ​​vores infrastruktur. Statens ledelse garanterer, at vores infrastruktur forbliver ønsket, selvom ændringerne sker over tid.

Administrer afhængigheder

Med Terraform kan vi definere relationerne mellem ressourcer i vores konfigurationsfil, og Terraform bruger tilstandsfilen til at sikre, at disse relationer vedligeholdes. Dette sikrer, at ændringerne af én ressource ikke utilsigtet påvirker andre ressourcer.

Disaster Recovery

Hvis der opstår en fejl eller udfald, kan vi bruge tilstandsfilen til at genskabe infrastrukturen i en kendt tilstand. Dette kan være med til at minimere nedetiden og sikre, at vores infrastruktur gendannes hurtigt og effektivt.

Bedste praksis for effektiv statsforvaltning

Her er nogle tips, som vi kan følge for at administrere staterne effektivt:

Brug en ekstern backend

En ekstern backend giver flere fordele i forhold til en lokal backend. Det giver flere brugere mulighed for at arbejde på den samme infrastruktur, og de tilbyder også bedre sikkerhed og pålidelighed end de lokale backends.

Aktiver versionsstyring

Ved at versionere tilstandsfilen kan vi spore ændringerne over tid og rulle tilbage til en tidligere version, hvis det er nødvendigt. Versionering giver også et revisionsspor og hjælper med at sikre, at ændringerne er korrekt dokumenteret.

Brug en låsemekanisme

Vi kan bruge en låsemekanisme, der hjælper med at forhindre konflikter, når flere brugere arbejder på den samme infrastruktur. Terraform understøtter flere låseværktøjer inklusive DynamoDB, Consul og S3.

Sikkerhedskopier din tilstandsfil

Vi kan genoprette fra datakorruption, hvis vi sikkerhedskopierer tilstandsfilen regelmæssigt. Vi skal opbevare sikkerhedskopierne på et sikkert sted og følge alle relevante overholdelseskrav.

Konklusion

Vi havde en kort introduktion til IaC og Terraform, mens vi forstod tilstandsfilerne og administrerede dem gennem eksempler. At forstå, hvordan Terraform fungerer, kan hjælpe os med at undgå almindelige faldgruber og sikre, at vores infrastruktur forbliver ønsket. Ved at følge bedste praksis for styring af stater kan vi bruge Terraform med tillid og effektivt.