Obsah

Infrastruktura jako kód (IaC)

Infrastruktura jako kód (anglicky Infrastructure as Code, zkráceně IaC) je moderní IT metodologie, která umožňuje správu, konfiguraci a provisioning (zprovoznění) výpočetní infrastruktury pomocí strojově čitelných konfiguračních souborů namísto ručního klikání v grafických rozhraních nebo fyzické konfigurace hardwaru.

Tento přístup přenáší osvědčené postupy ze softwarového inženýrství (jako je verzování kódu, automatické testování a CI/CD) přímo do světa správy serverů, sítí, databází a cloudových úložišť. Je to jeden ze základních pilířů kultury DevOps.

Proč IaC vzniklo? (Problém tradičního přístupu)

Před nástupem IaC (a cloud computingu) musel systémový administrátor při zakládání nového serveru provést celou řadu manuálních kroků: instalace OS, ruční nastavení IP adres, konfigurace firewallu, instalace potřebných knihoven a spuštění služeb.

Tento tradiční přístup s sebou nese zásadní nevýhody:

Hlavní výhody IaC

Deklarativní vs. Imperativní přístup

Při psaní kódu pro IaC se využívají dva odlišné přístupy:

Deklarativní přístup (Co se má vytvořit)

Uživatel v konfiguračním souboru definuje konečný požadovaný stav infrastruktury a samotný nástroj se postará o to, jak tohoto stavu dosáhnout. Pokud nástroji řeknete „chci 3 virtuální servery“, nástroj zkontroluje aktuální stav. Pokud běží dva, jeden vytvoří. Pokud neběží žádný, vytvoří tři. Příklady nástrojů: Terraform, OpenTofu, Ansible, AWS CloudFormation.

Imperativní přístup (Jak se to má vytvořit)

Uživatel píše sekvenci příkazů (skript), které musí proběhnout krok za krokem, aby se infrastruktura vybudovala. Správce musí sám ošetřit stavy, co se stane, pokud už server existuje nebo pokud některý krok selže. Příklady nástrojů: Bash skripty, AWS CLI, Python skripty využívající knihovnu Boto3.

Kategorie nástrojů pro IaC

Nástroje pro IaC se obvykle dělí podle toho, v jaké fázi životního cyklu infrastruktury nastupují:

1. Orchestrace a Provisioning (Vytvoření základů)

Tyto nástroje komunikují s cloudovými poskytovateli (AWS, Azure, GCP, OpenStack) nebo virtualizačními platformami (VMware, Proxmox) a vytvářejí samotné zdroje: virtuální stroje, sítě, firewally, DNS záznamy.

2. Správa konfigurace (Configuration Management)

Jakmile virtuální server existuje, tyto nástroje nastupují, aby do něj nainstalovaly software, upravily konfigurační soubory služeb (Nginx, PostgreSQL), nastavily uživatelská práva a spustily aplikace.

3. Imutabilní infrastruktura a GitOps

Moderní trend (kam spadá např. i NixOS), kde se běžící servery již za chodu nikdy neupravují. Pokud je potřeba změna, zahodí se celý server a nahradí se novým (např. novou verzí Docker image v Kubernetes).


Související články:

Tagy: devops iac terraform ansible automation gitops cloud infrastructure