Terraform State Management

Terraform State Management



Infrastruktura kao kod je postupak upravljanja i pružanja IT infrastrukture putem koda koji pomaže u prevladavanju složenosti opskrbe velikih razmjera i upravljanja IT resursima ručno i opetovano. Terraform tvrtke HashiCorp je IaC alat otvorenog koda koji koristi sustav upravljanja stanjem za praćenje promjena i upravljanje datotekama stanja. Njegov sustav upravljanja stanjem jedna je od njegovih ključnih značajki i pomaže u učinkovitom praćenju promjena infrastrukture. Ovaj članak govori o tome kako funkcionira upravljanje stanjem Terraform i kako ga učinkovito koristiti.

Terraform država

Trenutno stanje naše infrastrukture, koje uključuje informacije o resursima koje definiramo u našem kodu, bilježi se kao Terraform stanje. Terraform koristi ovo stanje za određivanje promjena koje su potrebne da se naša infrastruktura dovede u željeno stanje kada se izvrši naredba poput Terraform 'primijeni'. Nakon izvršenja promjena (stvaranje, modificiranje i brisanje), Terraform ažurira datoteku stanja s novim stanjem vaše infrastrukture.

Da bismo jasno shvatili koncept, uzmimo primjer:







resurs 'lokalna_datoteka' 'Ivan' {

naziv datoteke = '/home/John.txt'

sadržaj = 'Volim kućne ljubimce'

}

Ovdje stvaramo Terraform datoteku pod nazivom 'main.tf'. Unutar njega nalazi se resurs tipa local_file pod nazivom “John” s dva atributa: naziv datoteke i sadržaj.



Vrsta resursa local_file koristi se za izradu datoteke na lokalnom datotečnom sustavu stroja na kojem se izvodi Terraform. U ovom slučaju, datoteka je stvorena pod nazivom “John.txt” u direktoriju “/home”, a sadržaj datoteke je “I love pets”.



Izvedimo sada Terraform tok - Terraform init, planiranje i primjena. Kada prvi put izvršimo naredbu Terraform 'apply' u našem projektu, Terraform automatski stvara datoteku stanja pod nazivom 'terraform.tfstate' u korijenskom direktoriju našeg projekta Terraform. Uključuje sve informacije o trenutnom stanju naše infrastrukture u JSON formatu.





Ovo je datoteka stanja za resurs koji smo stvorili:



Sada, recimo da želimo ukloniti trenutni resurs i stvoriti drugi resurs tipa random_pet pod nazivom 'my-pet' s atributima - prefiks, duljina i separator.

resurs 'slučajni_kućni ljubimac' 'moj ljubimac' {

prefiks = 'gospodin'

duljina = '1'

separator = '.'

}

Ovdje uklanjamo resurs local_file i dodajemo resurs random_pet. Naše željeno stanje je da imamo samo resurs random_pet. Izvršimo Terraform init, planiranje i primjenu naredbi.

Kao što je prikazano na prethodnoj ilustraciji, kada izvršimo naredbu Terraform “plan”, ona pokazuje radnje koje Terraform poduzima da dođe do željenog stanja. Kada pokrenemo naredbu Terraform “apply”, kreira se resurs “my-pet”, a resurs “John” se uklanja. Također, datoteka stanja ažurira se uništavanjem metapodataka resursa local_file i dodavanjem metapodataka resursa random_pet.

Evo sadržaja ažurirane datoteke stanja:

Kako funkcionira DoesTerraform the Manage State?

Koristeći backend, Terraform upravlja stanjem. Pozadina je udaljena usluga ili lokalni datotečni sustav koji Terraform koristi za pohranjivanje i dohvaćanje podataka o stanju. Ovisno o našim zahtjevima, možemo odabrati odgovarajuću pozadinu.

Terraform podržava nekoliko ugrađenih pozadina uključujući lokalne, Amazon S3, HashiCorp Consul, Vault i Azure Storage. Također možemo izraditi prilagođenu pozadinu ako nijedna od ugrađenih opcija ne zadovoljava potrebe.

U prethodnim primjerima, datoteke stanja bile su pohranjene u lokalnoj pozadini. Ali pohranjivanje u udaljenu pozadinu najbolja je praksa budući da poziva na suradnju i povećava sigurnost.

Važnost upravljanja državom

Upravljanje stanjem u alatima kao što je Terraform bitno je zbog sljedećih ključnih točaka:

Utvrdite trenutno stanje svoje infrastrukture

Datoteka stanja pruža točnu snimku postojećih resursa i njihovih trenutnih atributa. Ovi podaci su imperativ u razumijevanju naše infrastrukture i osiguravanju da je u željenom stanju.

Pratite promjene na infrastrukturi tijekom vremena

Svaki put kada primijenimo promjene pomoću Terraforma, datoteka stanja se ažurira kako bi odražavala novo stanje naše infrastrukture. To nam omogućuje da pratimo kako se naša infrastruktura razvijala i osigurava revizijski trag svih promjena.

Automatizacija

Definiranje željenog stanja infrastrukture u kodu omogućuje nam automatizaciju stvaranja i upravljanja našom infrastrukturom. Državno upravljanje jamči da će naša infrastruktura ostati željena, čak i ako se promjene vrše tijekom vremena.

Upravljanje ovisnostima

Pomoću Terraforma možemo definirati odnose između resursa u našoj konfiguracijskoj datoteci, a Terraform koristi datoteku stanja kako bi osigurao održavanje tih odnosa. Time se osigurava da promjene jednog resursa nenamjerno ne utječu na druge resurse.

Oporavak od katastrofe

Ako dođe do kvara ili ispada, možemo upotrijebiti datoteku stanja za ponovno stvaranje infrastrukture u poznatom stanju. To može pomoći u smanjenju vremena zastoja i osigurati da se naša infrastruktura brzo i učinkovito obnovi.

Najbolje prakse za učinkovito upravljanje državom

Evo nekoliko savjeta koje možemo slijediti kako bismo učinkovito upravljali stanjem:

Koristite udaljenu pozadinu

Udaljeni backend pruža nekoliko prednosti u odnosu na lokalni backend. Omogućuje rad većeg broja korisnika na istoj infrastrukturi, a također nude bolju sigurnost i pouzdanost od lokalnih pozadina.

Omogući određivanje verzija

Verzioniranjem datoteke stanja možemo pratiti promjene tijekom vremena i vratiti se na prethodnu verziju ako je potrebno. Također, verzija osigurava revizijski trag i pomaže osigurati da su promjene odgovarajuće dokumentirane.

Koristite mehanizam za zaključavanje

Možemo koristiti mehanizam za zaključavanje koji pomaže u sprječavanju sukoba kada više korisnika radi na istoj infrastrukturi. Terraform podržava nekoliko alata za zaključavanje uključujući DynamoDB, Consul i S3.

Sigurnosno kopirajte svoju državnu datoteku

Možemo se oporaviti od oštećenja podataka ako redovito sigurnosno kopiramo datoteku stanja. Sigurnosne kopije moramo pohraniti na sigurno mjesto i slijediti sve relevantne zahtjeve sukladnosti.

Zaključak

Imali smo kratak uvod u IaC i Terraform dok smo razumjeli datoteke stanja i upravljali njima kroz primjere. Razumijevanje načina na koji Terraform funkcionira može nam pomoći da izbjegnemo uobičajene zamke i osiguramo da naša infrastruktura ostane željena. Slijedeći najbolje prakse za upravljanje stanjima, Terraform možemo koristiti s povjerenjem i učinkovito.