Co je infrastruktura jako kód (IaC)?

Infrastruktura jako kód (IaC) používá metodologii DevOps a správu verzí s popisným modelem k definování a nasazování infrastruktury, jako jsou sítě, virtuální počítače, nástroje pro vyrovnávání zatížení a topologie připojení. Stejně jako stejný zdrojový kód vždy generuje stejný binární soubor, model IaC při každém nasazení vygeneruje stejné prostředí.

Diagram of infrastructure as code defining the environment in a versioned file.

IaC je klíčovou praxí DevOps a součástí průběžného doručování. Díky IaC můžou týmy DevOps spolupracovat s jednotnou sadou postupů a nástrojů, které poskytují aplikace a jejich podpůrnou infrastrukturu rychle a spolehlivě ve velkém měřítku.

Vyhněte se ruční konfiguraci pro vynucení konzistence

IaC se vyvinul, aby vyřešil problém posunu prostředí v kanálech vydaných verzí. Bez IaC musí týmy udržovat nastavení prostředí nasazení jednotlivě. V průběhu času se každé prostředí stane "sněhovou vločkou", což je jedinečná konfigurace, která se nedá automaticky reprodukovat. Nekonzistence mezi prostředími může způsobit problémy s nasazením. Správa a údržba infrastruktury zahrnují ruční procesy, které jsou náchylné k chybám a obtížně se sledují.

IaC zabraňuje ruční konfiguraci a vynucuje konzistenci reprezentací požadovaných stavů prostředí prostřednictvím dobře zdokumentovaného kódu ve formátech, jako je JSON. Nasazení infrastruktury s využitím IaC jsou opakovatelná a zabraňují problémům za běhu způsobeným odchylkou od konfigurace nebo chybějícími závislostmi. Kanály verze spouštějí popisy prostředí a modely konfigurace verzí pro konfiguraci cílových prostředí. Pokud chcete provést změny, tým upraví zdroj, nikoli cíl.

Idempotenci, schopnost dané operace vždy vytvořit stejný výsledek, je důležitým principem IaC. Příkaz nasazení vždy nastaví cílové prostředí do stejné konfigurace bez ohledu na počáteční stav prostředí. Idempotence se dosahuje buď automatickou konfigurací existujícího cíle, nebo zrušením existujícího cíle a opětovným vytvořením nového prostředí.

Užitečné nástroje

Rychlé doručování stabilních testovacích prostředí ve velkém

IaC pomáhá týmům DevOps testovat aplikace v produkčních prostředích v rané fázi vývojového cyklu. Týmy můžou spolehlivě zřizovat více testovacích prostředí na vyžádání. Cloud dynamicky zřizuje a odstraňuje prostředí na základě definic IaC. Samotný kód infrastruktury je možné ověřit a otestovat, aby se zabránilo běžným problémům s nasazením.

Použití deklarativních definičních souborů

IaC by měl používat deklarativní definiční soubory, pokud je to možné. Definiční soubor popisuje komponenty a konfiguraci, které prostředí vyžaduje, ale nemusí nutně zajistit, jak této konfigurace dosáhnout. Soubor může například definovat požadovanou verzi a konfiguraci serveru, ale ne zadat proces instalace a konfigurace serveru. Tato abstrakce umožňuje větší flexibilitu používat optimalizované techniky, které poskytovatel infrastruktury poskytuje. Deklarativní definice také pomáhají snížit technický dluh údržby imperativního kódu, jako jsou skripty nasazení, které můžou nabíhát v průběhu času.

Pro deklarativní IaC neexistuje žádná standardní syntaxe. Syntaxe pro popis IaC obvykle závisí na požadavcích cílové platformy. Různé platformy podporují formáty souborů, jako jsou YAML, JSON a XML.

Nasazení IaC v Azure

Azure poskytuje nativní podporu IaC prostřednictvím modelu Azure Resource Manageru . Týmy mohou definovat deklarativní šablony ARM nebo Bicep , které určují infrastrukturu potřebnou k nasazení řešení.

Platformy třetích stran, jako je Terraform, Ansible, Chef a Pulumi , také podporují IaC ke správě automatizované infrastruktury.