====== YAML (YAML Ain't Markup Language) ====== **YAML** je lidsky čitelný standard pro serializaci dat. Je navržen tak, aby byl snadno čitelný pro lidi a zároveň jednoduchý na zpracování pro stroje. V dnešním IT světě se stal de facto standardem pro konfigurační soubory, zejména v oblasti **DevOps** a **Cloud computingu**. Název je rekurzivní zkratka, která zdůrazňuje, že YAML není značkovací jazyk (jako XML nebo HTML), ale zaměřuje se čistě na data. ===== Základní syntaxe a pravidla ===== YAML má několik striktních pravidel, která musíte dodržovat: * **Odsazování (Indentation):** K definování struktury se používají výhradně **mezery**, nikoliv tabulátory. Počet mezer musí být konzistentní (obvykle 2 nebo 4). * **Case sensitivity:** Rozlišují se malá a velká písmena. * **Kódování:** Soubory musí být v kódování UTF-8. * **Přípona:** Obvykle ''.yaml'' nebo ''.yml''. ===== Datové struktury v YAML ===== ==== 1. Klíč a hodnota (Maps/Dictionaries) ==== Základní stavební kámen. Odděluje se dvojtečkou s mezerou. verze: 3.8 nazev: "Moje Aplikace" aktivni: true ==== 2. Seznamy (Lists/Sequences) ==== Prvky seznamu začínají pomlčkou následovanou mezerou. servery: - web01 - web02 - db01 ==== 3. Vnořené objekty ==== Struktura se vytváří odsazením. databaze: host: localhost port: 5432 uzivatel: admin ===== Pokročilé techniky ===== ==== Víceřádkové řetězce ==== YAML umožňuje elegantně zapisovat dlouhé texty (např. skripty nebo certifikáty): * **Znak | (Literal):** Zachovává konce řádků. * **Znak > (Folded):** Nahradí konce řádků mezerou (vytvoří jeden dlouhý odstavec). ==== Komentáře ==== Na rozdíl od JSON podporuje YAML komentáře pomocí znaku **#**. # Toto je konfigurace pro produkci env: prod ==== Více dokumentů v jednom souboru ==== Můžete oddělit několik logických dokumentů pomocí tří pomlček (---). To se hojně využívá v Kubernetes manifestech. ===== Srovnání: YAML vs JSON vs XML ===== ^ Vlastnost ^ YAML ^ JSON ^ XML ^ | **Čitelnost** | Výborná | Dobrá | Horší | | **Komentáře** | Ano | Ne | Ano | | **Struktura** | Odsazení | Závorky {}, [] | Tagy | | **Typování** | Automatické | Striktní | Textové | ===== Časté chyby ===== * **Tabulátory:** Použití tabulátoru místo mezer je nejčastější příčinou chyby "mapping values are not allowed here". * **Chybějící mezera:** Dvojtečka musí být následována mezerou (''klíč:hodnota'' je špatně, ''klíč: hodnota'' je správně). * **Špatné odsazení:** Pokud prvek seznamu nezačíná na správné úrovni, změní se celá sémantika dokumentu. > **Tip:** Pro kontrolu správnosti syntaxe se doporučuje používat nástroje zvané **YAML Linters** nebo online validátory. V editoru VS Code je užitečné rozšíření "Red Hat YAML". [[it_encyklopedie:programovani_a_data|Zpět na Data]]