Terraform State Management

Terraform State Management



Infrastructure as Code er prosedyren for å administrere og klargjøre IT-infrastrukturen gjennom kode, som hjelper til med å overvinne kompleksiteten til storskala provisjonering og administrere IT-ressursene manuelt og gjentatte ganger. Terraform av HashiCorp er et åpen kildekode IaC-verktøy som bruker et tilstandsstyringssystem for å spore endringer og administrere tilstandsfilene. Statens styringssystem er en av nøkkelfunksjonene og hjelper til med å holde oversikt over infrastrukturendringer effektivt. Denne artikkelen dykker ned i hvordan Terraform-statsledelsen fungerer og hvordan den kan brukes effektivt.

Terraform State

Den nåværende tilstanden til infrastrukturen vår, som inkluderer informasjon om ressursene som vi definerer i koden vår, registreres som Terraform-tilstand. Terraform bruker denne tilstanden til å bestemme endringene som kreves for å bringe infrastrukturen vår til ønsket tilstand når en kommando som Terraform 'apply' utføres. Etter å ha utført endringene (opprett, modifiser og slett), oppdaterer Terraform tilstandsfilen med den nye tilstanden til infrastrukturen din.

For å forstå konseptet tydelig, la oss ta et eksempel:







ressurs 'lokal_fil' 'John' {

filnavn = '/home/John.txt'

innhold = 'Jeg elsker kjæledyr'

}

Her lager vi en Terraform-fil kalt 'main.tf'. Inne i den er en ressurs av typen local_file kalt 'John' med to attributter: filnavn og innhold.



Ressurstypen local_file brukes til å lage en fil på det lokale filsystemet på maskinen der Terraform kjører. I dette tilfellet opprettes filen med navnet 'John.txt' i katalogen '/home', og innholdet i filen er 'Jeg elsker kjæledyr'.



La oss nå utføre Terraform-flyten – Terraform starte, planlegge og bruke. Når vi utfører Terraform 'apply'-kommandoen i prosjektet vårt for første gang, oppretter Terraform automatisk tilstandsfilen kalt 'terraform.tfstate' i rotkatalogen til Terraform-prosjektet vårt. Den inkluderer all informasjon om infrastrukturens nåværende tilstand i JSON-format.





Her er tilstandsfilen for ressursen vi opprettet:



La oss nå si at vi vil fjerne den gjeldende ressursen og lage en annen ressurs av typen random_pet kalt 'my-pet' med attributter - prefiks, lengde og separator.

ressurs 'random_pet' 'kjæledyret mitt' {

prefiks = 'MR'

lengde = '1'

skilletegn = '.'

}

Her fjerner vi local_file-ressursen og legger til en random_pet-ressurs. Vår ønskede tilstand er å bare ha random_pet-ressursen. La oss utføre Terraform starte, planlegge og bruke kommandoer.

Som vist i forrige illustrasjon, når vi utfører Terraform 'plan'-kommandoen, viser den handlingene som Terraform tar for å komme til ønsket tilstand. Når vi kjører Terraform «apply»-kommandoen, opprettes «my-pet»-ressursen, og «John»-ressursen fjernes. Tilstandsfilen oppdateres også ved å ødelegge metadataene til local_file-ressursen og legge til metadataene til random_pet-ressursen.

Her er innholdet i den oppdaterte tilstandsfilen:

Hvordan fungerer Terraform the Manage State?

Ved å bruke en backend administrerer Terraform staten. En backend er en ekstern tjeneste eller et lokalt filsystem som Terraform bruker til å lagre og hente tilstandsdataene. Avhengig av våre krav kan vi velge en passende backend.

Terraform støtter flere innebygde backends inkludert lokale, Amazon S3, HashiCorp Consul, Vault og Azure Storage. Vi kan også lage en tilpasset backend hvis ingen av de innebygde alternativene oppfyller behovene.

I de forrige eksemplene ble tilstandsfilene lagret i den lokale backend. Men å lagre den i en ekstern backend er den beste praksisen siden det påkaller samarbeid og øker sikkerheten.

Viktigheten av statlig ledelse

Statlig ledelse i verktøy som Terraform er viktig på grunn av følgende nøkkelpunkter:

Bestem den nåværende tilstanden til infrastrukturen din

Tilstandsfilen gir et nøyaktig øyeblikksbilde av de eksisterende ressursene og deres nåværende attributter. Disse dataene er avgjørende for å forstå infrastrukturen vår og sikre at den er i ønsket tilstand.

Spor endringer i infrastrukturen over tid

Hver gang vi bruker endringene ved hjelp av Terraform, oppdateres tilstandsfilen for å gjenspeile den nye tilstanden til infrastrukturen vår. Dette gjør oss i stand til å spore hvordan infrastrukturen vår har utviklet seg og gir et revisjonsspor for alle endringer.

Automasjon

Å definere ønsket infrastrukturtilstand i kode gjør oss i stand til å automatisere opprettelsen og administrasjonen av infrastrukturen vår. Statlig ledelse garanterer at vår infrastruktur forblir ønsket, selv om endringene gjøres over tid.

Administrer avhengigheter

Med Terraform kan vi definere relasjonene mellom ressursene i konfigurasjonsfilen vår, og Terraform bruker tilstandsfilen for å sikre at disse relasjonene opprettholdes. Dette sikrer at endringene i én ressurs ikke utilsiktet påvirker andre ressurser.

Katastrofegjenoppretting

Hvis det oppstår en feil eller driftsstans, kan vi bruke tilstandsfilen til å gjenskape infrastrukturen i kjent tilstand. Dette kan bidra til å minimere nedetiden og sikre at infrastrukturen vår gjenopprettes raskt og effektivt.

Beste praksis for effektiv statlig forvaltning

Her er noen tips vi kan følge for å administrere statene effektivt:

Bruk en ekstern backend

En ekstern backend gir flere fordeler i forhold til en lokal backend. Det lar flere brukere jobbe på samme infrastruktur, og de tilbyr også bedre sikkerhet og pålitelighet enn de lokale backends.

Aktiver versjonsstyring

Ved å versjonere tilstandsfilen kan vi spore endringene over tid og rulle tilbake til en tidligere versjon om nødvendig. Versjonsstyring gir også et revisjonsspor og bidrar til å sikre at endringene er riktig dokumentert.

Bruk en låsemekanisme

Vi kan bruke en låsemekanisme som bidrar til å forhindre konflikter når flere brukere jobber på samme infrastruktur. Terraform støtter flere låseverktøy inkludert DynamoDB, Consul og S3.

Sikkerhetskopier tilstandsfilen din

Vi kan gjenopprette fra datakorrupsjon hvis vi sikkerhetskopierer tilstandsfilen regelmessig. Vi må lagre sikkerhetskopiene på et sikkert sted og følge alle relevante samsvarskrav.

Konklusjon

Vi hadde en kort introduksjon til IaC og Terraform mens vi forsto tilstandsfilene og administrerte dem gjennom eksempler. Å forstå hvordan Terraform fungerer i staten kan hjelpe oss å unngå vanlige fallgruver og sikre at infrastrukturen vår forblir ønsket. Ved å følge beste praksis for å administrere stater, kan vi bruke Terraform med tillit og effektivt.