Konfigurace YAML (.yaml)
YAML StandardníYAML Ain't Markup Language (YAML) je dominantní formát pro serializaci dat pro moderní DevOps, cloudovou infrastrukturu (Kubernetes, Docker Compose) a automatizaci CI/CD, přičemž klade důraz na čitelnost pro lidi pomocí čistého odsazování mezerami.
Převést YAML na JSON
Bezplatný konvertor z YAML do JSON v prohlížeči. Převeďte soubory okamžitě ve svém zařízení.
Kontrola a metadata
Operační systémy a analyzátory souborů identifikují soubory YAML kontrolou počáteční binární sekvence bajtů:
Podpis hlavičky na úrovni bajtů (Magic Bytes)
Operační systémy a analyzátory souborů identifikují soubory YAML kontrolou počáteční binární sekvence bajtů:
HEXADECIMÁLNÍ PODPIS (POSUN 0):
2D 2D 2D 0AASCII REPREZENTACE: ---\n
Standardizace: YAML 1.2.2 Specification
Technické specifikace
| Architektura kontejneru | Pro člověka čitelný formát serializace dat založený na odsazení, nadmnožina JSONu, která podporuje kotvy a aliasy |
| Komprese | Nekomprimovaný textový proud |
| Pořadí bajtů | Proud textu UTF-8 / Unicode |
| Barevné prostory | Nevztahuje se (serializace dat) |
| Kanály a struktura | Mapování (slovníky klíčů a hodnot), sekvence (seznamy), skalární typy (řetězce, čísla, booleovské hodnoty) a kotvy (&ref/*ref) |
| Max. rozměry | Velikost dokumentu není omezená (podporuje proudy více dokumentů oddělených značkou „---“) |
| Průhlednost | Žádná |
| Streamování a progresivní načítání | Proudy více dokumentů umožňují sekvenční zpracování jednotlivých dokumentů |
Technická srovnávací matice: YAML vs konkurence
| Technický atribut | YAML (Aktuální) | JSON | TOML | XML |
|---|---|---|---|---|
| Styl syntaxe | Hierarchie odsazení pomocí mezer | Přísné závorky a uvozovky | Tabulky a páry klíč=hodnota | Upovídané otevírací/uzavírací značky |
| Podpora komentářů | Nativní (komentáře pomocí #) | Komentáře nejsou povoleny | Nativní (komentáře pomocí #) | <!-- komentáře --> |
| Přijetí v DevOps | Podpora se liší podle programu. | Podpora se liší podle programu. | Konfigurace balíčků pro Rust/Python | Podniková legacy konfigurace |
| Opětovné použití dat | Nativní kotvy (&) a aliasy (*) | Žádné (ruční duplikace) | Žádné (ruční duplikace) | Entity XML |
Běžné režimy poškození a příručka pro obnovení v hex
Chyba parseru: 'mapping values are not allowed here' nebo chyba odsazování.
Hlavní příčina: Míchání tabulátorů s mezerami nebo nesprávně zarovnané úrovně odsazení.
Obnovení: Převeďte tabulátory na mezery a ověřte syntaxi pomocí formátovače File2File.app YAML Formatter.
Bezpečnostní analýza a vektory útoků na parser
Analyzátory YAML, které podporují vlastní značky typů (např. 'yaml.load()' v PyYAML), v minulosti umožňovaly vzdálené spuštění kódu prostřednictvím vytváření libovolných objektů.
Známé vektory útoků
- Spuštění libovolného kódu prostřednictvím nebezpečných značek pro deserializaci objektů (např. '!!python/object/apply').
- Útoky expanzí entit (ekvivalent útoku 'billion laughs' využívající kotvy a aliasy YAML).
- Zranitelnosti záměny typů v důsledku implicitního parsování booleovských hodnot a časových razítek.
Doporučené bezpečnostní postupy: Vždy používejte bezpečné parsery YAML ('yaml.safe_load()' v jazyce Python) a vynuťte limity hloubky expanze kotev.
Historický vývoj a milníky
Klíčové výhody a přednosti
- YAML se běžně používá v infrastrukturních nástrojích, ale podpora a chování se liší podle implementace.
- Čistá, čitelná syntaxe: odstraňuje nepořádek v podobě složených, hranatých závorek a uvozovek pomocí intuitivního odsazování.
- Podporuje reference a kotvy (&anchor / *anchor) k opětovnému použití opakovaných konfiguračních bloků bez duplikace.
Technická omezení a nevýhody
- Citlivý na prázdné znaky: náhodný tabulátor nebo jediná mezera navíc může narušit hierarchii dokumentu nebo způsobit chybu při parsování.
- Známé chyby při vynucování typů: slova bez uvozovek jako 'no', 'on', 'yes' nebo kódy zemí ('NO' pro Norsko) se mohou potichu změnit na booleovské hodnoty.
- Výrazně pomalejší rychlost parsování ve srovnání s binárními formáty nebo striktním JSONem.
Zajímavé technické drobnosti
- Zkratka YAML původně znamenala 'Yet Another Markup Language', ale byla humorně přejmenována na rekurzivní akronym 'YAML Ain't Markup Language', aby se zdůraznilo zaměření na serializaci dat.
- 'problém Norska' je známá programátorská chyba, kdy byl kód země 'NO' v souboru YAML interpretován jako booleovská hodnota 'false'.
- Každý platný soubor JSON na světě je zároveň 100% platným souborem YAML.
Často kladené technické otázky
K čemu se používá YAML?
YAML je primární konfigurační jazyk pro cloud computing, nasazení clusterů Kubernetes, soubory Docker Compose, pracovní postupy GitHub Actions a nastavení softwaru.
Mohu v souborech YAML používat tabulátory?
Ne. Oficiální specifikace YAML přísně zakazuje používání znaků tabulátoru pro odsazení; musíte vždy používat mezery (obvykle 2 mezery na úroveň).
Jak mohu převést YAML na JSON?
Soubory YAML můžete jedním kliknutím převést na čistý, ověřený JSON pomocí File2File.app přímo ve vašem webovém prohlížeči se zachováním úplného soukromí.
Související konverzní páry pro YAML
Konverze konfiguračních souborů YAML do formátu JSON převádí textové struktury s odsazením na objekty, které webové aplikace snadno strojově zpracují.
Konverze konfiguračních souborů JSON do formátu YAML mění pevné programové datové struktury na přehledné dokumenty, které administrátorům systémů mnohem usnadňují úpravy.