Terraform State Management

Terraform State Management



Infrastructure as Code är proceduren för att hantera och tillhandahålla IT-infrastrukturen genom kod som hjälper till att övervinna komplexiteten i storskalig provisionering och hantera IT-resurserna manuellt och upprepade gånger. Terraform av HashiCorp är ett IaC-verktyg med öppen källkod som använder ett tillståndshanteringssystem för att spåra ändringar och hantera tillståndsfilerna. Dess statliga ledningssystem är en av dess nyckelfunktioner och hjälper till att hålla reda på infrastrukturförändringar effektivt. Den här artikeln dyker in i hur Terraforms statliga förvaltning fungerar och hur man använder den effektivt.

Terraform State

Det aktuella tillståndet för vår infrastruktur, som inkluderar information om resurserna som vi definierar i vår kod, registreras som Terraform-tillstånd. Terraform använder detta tillstånd för att bestämma de ändringar som krävs för att få vår infrastruktur till önskat tillstånd när ett kommando som Terraform 'apply' körs. Efter att ha utfört ändringarna (skapa, ändra och ta bort), uppdaterar Terraform tillståndsfilen med det nya tillståndet för din infrastruktur.

För att tydligt förstå konceptet, låt oss ta ett exempel:







resurs 'lokal_fil' 'John' {

filnamn = '/home/John.txt'

innehåll = 'Jag älskar husdjur'

}

Här skapar vi en Terraform-fil som heter 'main.tf'. Inuti den finns en resurs av typen local_file som heter 'John' med två attribut: filnamn och innehåll.



Resurstypen local_file används för att skapa en fil på det lokala filsystemet på maskinen där Terraform körs. I det här fallet skapas filen med namnet 'John.txt' i katalogen '/home', och innehållet i filen är 'Jag älskar husdjur'.



Nu, låt oss utföra Terraform-flödet – Terraform initiera, planera och tillämpa. När vi kör Terraform 'apply'-kommandot i vårt projekt för första gången, skapar Terraform automatiskt tillståndsfilen som heter 'terraform.tfstate' i rotkatalogen för vårt Terraform-projekt. Den innehåller all information om vår infrastrukturs nuvarande tillstånd i JSON-format.





Här är tillståndsfilen för resursen som vi skapade:



Låt oss nu säga att vi vill ta bort den aktuella resursen och skapa en annan resurs av typen random_pet som heter 'my-pet' med attribut - prefix, längd och separator.

resurs 'random_pet' 'mitt husdjur' {

prefix = 'Herr'

längd = '1'

separator = '.'

}

Här tar vi bort resursen local_file och lägger till en random_pet-resurs. Vårt önskade tillstånd är att bara ha resursen random_pet. Låt oss utföra Terraform initiera, planera och tillämpa kommandon.

Som visas i föregående illustration, när vi kör Terraform 'plan' kommandot, visar det de åtgärder som Terraform vidtar för att komma till önskat tillstånd. När vi kör Terraform 'apply'-kommandot skapas 'my-pet'-resursen och 'John'-resursen tas bort. Tillståndsfilen uppdateras också genom att förstöra metadata för local_file-resursen och lägga till metadata för random_pet-resursen.

Här är innehållet i den uppdaterade tillståndsfilen:

Hur fungerar Terraform the Manage State?

Med hjälp av en backend hanterar Terraform staten. En backend är en fjärrtjänst eller ett lokalt filsystem som Terraform använder för att lagra och hämta tillståndsdata. Beroende på våra krav kan vi välja en lämplig backend.

Terraform stöder flera inbyggda backends inklusive lokala, Amazon S3, HashiCorp Consul, Vault och Azure Storage. Vi kan också skapa en anpassad backend om inget av de inbyggda alternativen uppfyller behoven.

I de tidigare exemplen lagrades tillståndsfilerna i den lokala backend. Men att lagra den i en fjärransluten backend är den bästa praxis eftersom det åberopar samarbete och ökar säkerheten.

Betydelsen av statlig ledning

Statlig förvaltning i verktyg som Terraform är väsentlig på grund av följande nyckelpunkter:

Bestäm det aktuella tillståndet för din infrastruktur

Tillståndsfilen ger en korrekt ögonblicksbild av de befintliga resurserna och deras nuvarande attribut. Dessa uppgifter är absolut nödvändiga för att förstå vår infrastruktur och säkerställa att den är i önskat tillstånd.

Spåra förändringar av infrastrukturen över tid

Varje gång vi tillämpar ändringarna med Terraform uppdateras tillståndsfilen för att återspegla det nya tillståndet för vår infrastruktur. Detta gör det möjligt för oss att spåra hur vår infrastruktur har utvecklats och ger en granskning av alla förändringar.

Automatisering

Genom att definiera ditt önskade infrastrukturtillstånd i kod kan vi automatisera skapandet och hanteringen av vår infrastruktur. Statlig ledning garanterar att vår infrastruktur förblir önskad, även om förändringarna görs över tid.

Hantera beroenden

Med Terraform kan vi definiera relationerna mellan resurser i vår konfigurationsfil, och Terraform använder tillståndsfilen för att säkerställa att dessa relationer upprätthålls. Detta säkerställer att ändringarna av en resurs inte oavsiktligt påverkar andra resurser.

Katastrofåterställning

Om ett fel eller avbrott inträffar kan vi använda tillståndsfilen för att återskapa infrastrukturen i ett känt tillstånd. Detta kan hjälpa till att minimera stilleståndstiden och säkerställa att vår infrastruktur återställs snabbt och effektivt.

Bästa praxis för effektiv statlig förvaltning

Här är några tips som vi kan följa för att hantera staterna effektivt:

Använd en fjärrstyrd backend

En fjärransluten backend ger flera fördelar jämfört med en lokal backend. Det tillåter flera användare att arbeta på samma infrastruktur och de erbjuder också bättre säkerhet och tillförlitlighet än de lokala backends.

Aktivera versionshantering

Genom att versionera tillståndsfilen kan vi spåra ändringarna över tid och rulla tillbaka till en tidigare version om det behövs. Dessutom tillhandahåller versionshantering ett granskningsspår och hjälper till att säkerställa att ändringarna är korrekt dokumenterade.

Använd en låsmekanism

Vi kan använda en låsmekanism som hjälper till att förhindra konflikter när flera användare arbetar på samma infrastruktur. Terraform stöder flera låsverktyg inklusive DynamoDB, Consul och S3.

Säkerhetskopiera din tillståndsfil

Vi kan återställa från datakorruption om vi säkerhetskopierar tillståndsfilen regelbundet. Vi måste lagra säkerhetskopiorna på en säker plats och följa alla relevanta efterlevnadskrav.

Slutsats

Vi fick en kort introduktion till IaC och Terraform samtidigt som vi förstod tillståndsfilerna och hanterade dem genom exempel. Att förstå hur Terraform fungerar i staten kan hjälpa oss att undvika vanliga fallgropar och säkerställa att vår infrastruktur förblir önskad. Genom att följa bästa praxis för att hantera stater kan vi använda Terraform med tillförsikt och effektivt.