Řízení stavu Terraform

Rizeni Stavu Terraform



Infrastructure as Code je procedura správy a zajišťování IT infrastruktury prostřednictvím kódu, který pomáhá překonat složitost rozsáhlého zajišťování a správy IT zdrojů ručně a opakovaně. Terraform od HashiCorp je open-source nástroj IaC, který používá systém správy stavu ke sledování změn a správě souborů stavu. Jeho systém řízení stavu je jednou z jeho klíčových funkcí a pomáhá efektivně sledovat změny infrastruktury. Tento článek se ponoří do toho, jak správa stavu Terraform funguje a jak ji efektivně používat.

Teraformní stát

Aktuální stav naší infrastruktury, který zahrnuje informace o zdrojích, které definujeme v našem kódu, je zaznamenán jako stav Terraform. Terraform používá tento stav k určení změn, které jsou nutné k uvedení naší infrastruktury do požadovaného stavu, když je proveden příkaz jako Terraform „použít“. Po provedení změn (vytvoření, úpravy a odstranění) Terraform aktualizuje stavový soubor o nový stav vaší infrastruktury.

Abychom koncept jasně pochopili, uveďme si příklad:







zdroj 'místní_soubor' 'John' {

název souboru = '/home/John.txt'

obsah = 'Miluji zvířátka'

}

Zde vytvoříme soubor Terraform s názvem „main.tf“. Uvnitř je zdroj typu local_file s názvem „John“ se dvěma atributy: název souboru a obsah.



Typ prostředku local_file se používá k vytvoření souboru v lokálním souborovém systému počítače, na kterém běží Terraform. V tomto případě je soubor vytvořen s názvem „John.txt“ v adresáři „/home“ a obsah souboru je „I love pets“.



Nyní provedeme postup Terraform – Terraform init, plánovat a aplikovat. Když v našem projektu poprvé spustíme příkaz Terraform „apply“, Terraform automaticky vytvoří stavový soubor s názvem „terraform.tfstate“ v kořenovém adresáři našeho projektu Terraform. Obsahuje všechny informace o aktuálním stavu naší infrastruktury ve formátu JSON.





Zde je soubor stavu pro prostředek, který jsme vytvořili:



Nyní řekněme, že chceme odstranit aktuální zdroj a vytvořit jiný zdroj typu random_pet s názvem „my-pet“ s atributy – prefix, délka a oddělovač.

zdroj 'random_pet' 'můj mazlíček' {

předpona = 'Pan'

délka = '1'

oddělovač = '.'

}

Zde odstraníme prostředek local_file a přidáme prostředek random_pet. Naším požadovaným stavem je mít pouze zdroj random_pet. Pojďme provést příkazy Terraform init, plánovat a aplikovat.

Jak je znázorněno na předchozím obrázku, když spustíme příkaz Terraform „plán“, ukazuje akce, které Terraform provádí, aby se dostal do požadovaného stavu. Když spustíme příkaz Terraform „použít“, vytvoří se zdroj „můj mazlíček“ a zdroj „John“ se odstraní. Stavový soubor je také aktualizován zničením metadat zdroje local_file a přidáním metadat zdroje random_pet.

Zde je obsah aktualizovaného souboru stavu:

Jak Terraform the Manage State funguje?

Pomocí backendu Terraform spravuje stav. Backend je vzdálená služba nebo lokální souborový systém, který Terraform používá k ukládání a získávání stavových dat. Podle našich požadavků můžeme zvolit vhodný backend.

Terraform podporuje několik vestavěných backendů včetně místních, Amazon S3, HashiCorp Consul, Vault a Azure Storage. Můžeme také vytvořit vlastní backend, pokud žádná z vestavěných možností nevyhovuje potřebám.

V předchozích příkladech byly soubory stavu uloženy v místním backendu. Ale uložení na vzdáleném backendu je nejlepší postup, protože to vyžaduje spolupráci a zvyšuje bezpečnost.

Význam státního managementu

Správa stavu v nástrojích, jako je Terraform, je nezbytná kvůli následujícím klíčovým bodům:

Zjistěte aktuální stav vaší infrastruktury

Soubor stavu poskytuje přesný snímek existujících prostředků a jejich aktuálních atributů. Tato data jsou nezbytná pro pochopení naší infrastruktury a pro zajištění, že je v požadovaném stavu.

Sledujte změny infrastruktury v průběhu času

Pokaždé, když použijeme změny pomocí Terraformu, stavový soubor se aktualizuje, aby odrážel nový stav naší infrastruktury. To nám umožňuje sledovat, jak se naše infrastruktura vyvíjela, a poskytuje auditní záznam všech změn.

Automatizace

Definování požadovaného stavu infrastruktury v kódu nám umožňuje automatizovat vytváření a správu naší infrastruktury. Státní management garantuje, že naše infrastruktura zůstane žádoucí, i když změny budou provedeny v průběhu času.

Správa závislostí

S Terraformem můžeme definovat vztahy mezi prostředky v našem konfiguračním souboru a Terraform používá stavový soubor, aby zajistil, že tyto vztahy budou zachovány. Tím je zajištěno, že změny jednoho zdroje neovlivní neúmyslně jiné zdroje.

Zotavení po havárii

Pokud dojde k selhání nebo výpadku, můžeme použít stavový soubor k opětovnému vytvoření infrastruktury ve známém stavu. To může pomoci minimalizovat prostoje a zajistit rychlou a efektivní obnovu naší infrastruktury.

Nejlepší postupy pro efektivní řízení státu

Zde je několik tipů, podle kterých se můžeme řídit stavy efektivně:

Použijte vzdálený backend

Vzdálený backend poskytuje několik výhod oproti místnímu backendu. Umožňuje více uživatelům pracovat na stejné infrastruktuře a také nabízí lepší zabezpečení a spolehlivost než místní backendy.

Povolit správu verzí

Verzí souboru stavu můžeme sledovat změny v průběhu času a v případě potřeby se vrátit k předchozí verzi. Správa verzí také poskytuje auditní záznam a pomáhá zajistit, aby byly změny náležitě zdokumentovány.

Použijte uzamykací mechanismus

Můžeme použít zamykací mechanismus, který pomáhá předcházet konfliktům, když na stejné infrastruktuře pracuje více uživatelů. Terraform podporuje několik uzamykacích nástrojů včetně DynamoDB, Consul a S3.

Zálohujte svůj státní soubor

Můžeme se zotavit z poškození dat, pokud pravidelně zálohujeme státní soubor. Zálohy musíme uložit na bezpečném místě a dodržovat všechny příslušné požadavky na shodu.

Závěr

Měli jsme krátký úvod do IaC a Terraform a zároveň jsme pochopili stavové soubory a spravovali je pomocí příkladů. Pochopení toho, jak Terraform funguje, nám může pomoci vyhnout se běžným nástrahám a zajistit, že naše infrastruktura zůstane žádoucí. Dodržováním osvědčených postupů pro správu států můžeme Terraform používat s důvěrou a efektivně.