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.