Terraform State Management

Terraform State Management



Infrastruktura kot koda je postopek upravljanja in zagotavljanja infrastrukture IT prek kode, ki pomaga premagati zapletenost obsežnega zagotavljanja in upravljanja virov IT ročno in večkrat. Terraform podjetja HashiCorp je odprtokodno orodje IaC, ki uporablja sistem upravljanja stanja za sledenje spremembam in upravljanje datotek stanja. Njegov sistem upravljanja stanja je ena njegovih ključnih značilnosti in pomaga učinkovito spremljati spremembe infrastrukture. Ta članek se poglobi v to, kako deluje upravljanje stanja Terraform in kako ga učinkovito uporabljati.

Država Terraform

Trenutno stanje naše infrastrukture, ki vključuje informacije o virih, ki jih definiramo v naši kodi, je zabeleženo kot stanje Terraform. Terraform uporablja to stanje za določitev sprememb, ki so potrebne, da se naša infrastruktura pripelje v želeno stanje, ko se izvede ukaz, kot je Terraform »uporabi«. Po izvedbi sprememb (ustvarjanje, spreminjanje in brisanje) Terraform posodobi datoteko stanja z novim stanjem vaše infrastrukture.

Da bi jasno razumeli koncept, vzemimo primer:







vir 'lokalna_datoteka' 'Janez' {

ime datoteke = '/home/John.txt'

vsebina = 'Rad imam hišne ljubljenčke'

}

Tukaj ustvarimo datoteko Terraform z imenom 'main.tf'. V njem je vir tipa local_file z imenom »John« z dvema atributoma: ime datoteke in vsebina.



Vrsta vira local_file se uporablja za izdelavo datoteke v lokalnem datotečnem sistemu računalnika, kjer se izvaja Terraform. V tem primeru je datoteka ustvarjena z imenom »John.txt« v imeniku »/home«, vsebina datoteke pa je »I love pets«.



Zdaj pa izvedimo tok Terraform – Terraform zaženite, načrtujte in uporabite. Ko v našem projektu prvič izvedemo ukaz Terraform »uporabi«, Terraform samodejno ustvari datoteko stanja z imenom »terraform.tfstate« v korenskem imeniku našega projekta Terraform. Vključuje vse informacije o trenutnem stanju naše infrastrukture v formatu JSON.





Tukaj je datoteka stanja za vir, ki smo ga ustvarili:



Zdaj pa recimo, da želimo odstraniti trenutni vir in ustvariti drug vir tipa random_pet z imenom 'my-pet' z atributi – predpona, dolžina in ločilo.

vir 'naključni_hišni ljubljenček' 'moj hišni ljubljenček' {

predpona = 'Gospod'

dolžina = '1'

ločilo = '.'

}

Tukaj odstranimo vir local_file in dodamo vir random_pet. Naše želeno stanje je, da imamo samo vir random_pet. Izvedimo ukaze za zagon, načrtovanje in uporabo Terraforma.

Kot je prikazano na prejšnji ilustraciji, ko izvedemo ukaz Terraform »plan«, prikaže dejanja, ki jih Terraform izvede, da pride do želenega stanja. Ko zaženemo ukaz Terraform »uporabi«, se ustvari vir »my-pet« in vir »John« odstrani. Poleg tega se datoteka stanja posodobi z uničenjem metapodatkov vira local_file in dodajanjem metapodatkov vira random_pet.

Tukaj je vsebina posodobljene datoteke stanja:

Kako deluje DoesTerraform the Manage State?

Z uporabo zaledja Terraform upravlja stanje. Zaledje je oddaljena storitev ali lokalni datotečni sistem, ki ga Terraform uporablja za shranjevanje in pridobivanje podatkov o stanju. Glede na naše zahteve lahko izberemo primerno zaledje.

Terraform podpira več vgrajenih ozadij, vključno z lokalnimi, Amazon S3, HashiCorp Consul, Vault in Azure Storage. Ustvarimo lahko tudi zaledje po meri, če nobena od vgrajenih možnosti ne ustreza potrebam.

V prejšnjih primerih so bile datoteke stanja shranjene v lokalnem ozadju. Toda shranjevanje v oddaljenem ozadju je najboljša praksa, saj prikliče sodelovanje in poveča varnost.

Pomen upravljanja države

Upravljanje stanja v orodjih, kot je Terraform, je bistveno zaradi naslednjih ključnih točk:

Ugotovite trenutno stanje vaše infrastrukture

Datoteka stanja zagotavlja natančen posnetek obstoječih virov in njihovih trenutnih atributov. Ti podatki so nujni za razumevanje naše infrastrukture in zagotavljanje, da je v želenem stanju.

Sledite spremembam infrastrukture skozi čas

Vsakič, ko uporabimo spremembe s pomočjo Terraforma, se datoteka stanja posodobi, da odraža novo stanje naše infrastrukture. To nam omogoča, da spremljamo, kako se je naša infrastruktura razvijala, in zagotavlja revizijsko sled vseh sprememb.

Avtomatizacija

Definiranje želenega stanja infrastrukture v kodi nam omogoča avtomatizacijo ustvarjanja in upravljanja naše infrastrukture. Državno upravljanje zagotavlja, da naša infrastruktura ostaja želena, tudi če se spremembe izvajajo skozi čas.

Upravljanje odvisnosti

S Terraformom lahko definiramo razmerja med viri v naši konfiguracijski datoteki, Terraform pa uporablja datoteko stanja, da zagotovi vzdrževanje teh razmerij. To zagotavlja, da spremembe enega vira nehote ne vplivajo na druge vire.

Obnovitev po nesreči

Če pride do okvare ali izpada, lahko uporabimo datoteko stanja za ponovno ustvarjanje infrastrukture v znanem stanju. To lahko pomaga zmanjšati čas izpadov in zagotoviti hitro in učinkovito obnovitev naše infrastrukture.

Najboljše prakse za učinkovito upravljanje države

Tukaj je nekaj nasvetov, ki jih lahko upoštevamo za učinkovito obvladovanje stanja:

Uporabite oddaljeno zaledje

Oddaljeno zaledje nudi številne prednosti pred lokalnim zaledjem. Omogoča več uporabnikom, da delajo na isti infrastrukturi, ponujajo pa tudi boljšo varnost in zanesljivost kot lokalna ozadja.

Omogoči upravljanje različic

Z različico datoteke stanja lahko sledimo spremembam skozi čas in se po potrebi vrnemo na prejšnjo različico. Različice prav tako zagotavljajo revizijsko sled in pomagajo zagotoviti, da so spremembe ustrezno dokumentirane.

Uporabite zaklepni mehanizem

Uporabimo lahko mehanizem zaklepanja, ki pomaga preprečiti konflikte, ko več uporabnikov dela na isti infrastrukturi. Terraform podpira več orodij za zaklepanje, vključno z DynamoDB, Consul in S3.

Varnostno kopirajte datoteko stanja

Poškodbo podatkov lahko obnovimo, če redno varnostno kopiramo datoteko stanja. Varnostne kopije moramo shraniti na varno mesto in upoštevati vse ustrezne zahteve glede skladnosti.

Zaključek

Imeli smo kratek uvod v IaC in Terraform, medtem ko smo razumeli datoteke stanja in jih upravljali s primeri. Razumevanje delovanja države Terraform nam lahko pomaga, da se izognemo pogostim pastem in zagotovimo, da naša infrastruktura ostane želena. Z upoštevanjem najboljših praks za upravljanje stanj lahko Terraform uporabljamo samozavestno in učinkovito.