====== Terraform ====== **Terraform** je open-source nástroj pro **Infrastructure as Code (IaC)** vyvinutý společností HashiCorp (nyní součást IBM). Umožňuje definovat, nasazovat a spravovat infrastrukturu deklarativním způsobem pomocí konfiguračních souborů, které lze verzovat v Gitu. Terraform podporuje stovky poskytovatelů (AWS, Azure, GCP, Kubernetes, VMware, databáze, DNS, atd.) a je jedním z nejpoužívanějších nástrojů pro správu multi-cloud a hybridní infrastruktury. ===== 1. Základní principy ===== Terraform pracuje **deklarativně** – definujete **jaký** má výsledný stav infrastruktury vypadat, Terraform sám zjistí, co je potřeba vytvořit, změnit nebo smazat. Hlavní součásti: * **Konfigurační soubory** (``*.tf``) — psané v **HCL** (HashiCorp Configuration Language) * **Providers** — pluginy, které komunikují s API jednotlivých služeb * **State** — soubor (nebo databáze), který si Terraform pamatuje aktuální stav infrastruktury * **Modules** — opakovaně použitelné balíčky infrastruktury ===== 2. Jak Terraform funguje (životní cyklus) ===== Nejdůležitější příkazy: * ``terraform init`` — inicializace, stažení providerů * ``terraform plan`` — výpočet změn (co se bude dít) * ``terraform apply`` — provedení změn * ``terraform destroy`` — kompletní smazání spravované infrastruktury ===== 3. Klíčové koncepty ===== ==== Providers ==== Poskytovatelé jsou pluginy, které umožňují Terraformu pracovat s konkrétní službou. Nejznámější jsou ``aws``, ``azurerm``, ``google``, ``kubernetes``. Příklad: ```hcl provider "aws" { region = "eu-central-1" }