YAML konfiguracija (.yaml)
YAML StandardnoYAML Ain't Markup Language (YAML) dominantan je format za serijalizaciju podataka za moderni DevOps, računalstvo u oblaku (Kubernetes, Docker Compose) i CI/CD automatizaciju, naglašavajući čitljivost za ljude kroz čistu uvlaku (indentaciju) bjelinama.
Pretvori YAML u JSON
Besplatni YAML u JSON pretvarač u pregledniku. Trenutno pretvorite datoteke na svom uređaju.
Pregledaj i metapodaci
Operativni sustavi i alati za analizu datoteka identificiraju YAML datoteke provjerom početnog niza binarnih bajtova:
Potpis zaglavlja na razini bajtova (Magic Bytes)
Operativni sustavi i alati za analizu datoteka identificiraju YAML datoteke provjerom početnog niza binarnih bajtova:
HEX POTPIS (POMAK 0):
2D 2D 2D 0AASCII PRIKAZ: ---\n
Standardizacija: YAML 1.2.2 Specification
Tehničke specifikacije
| Arhitektura spremnika | Indentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases |
| Kompresija | Uncompressed text stream |
| 字节序 | UTF-8 / Unicode text stream |
| Prostori boja | N/A (Data Serialization) |
| Kanali i struktura | Mappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref) |
| Maksimalne dimenzije | Unbounded document size (supports multi-document streams separated by '---') |
| Prozirnost | None |
| Streaming i progresivno | Multi-document streams allow sequential document-by-document processing |
Tehnička matrica usporedbe: YAML vs Konkurencija
| Tehnički atribut | YAML (Trenutno) | JSON | TOML | XML |
|---|---|---|---|---|
| Stil sintakse | Hijerarhija uvlaka bjelinama | Stroge uglate zagrade i navodnici | Tablice i parovi ključ=vrijednost | Opširne otvarajuće/zatvarajuće oznake |
| Podrška za komentare | Izvorna (# komentari) | Komentari nisu dopušteni | Izvorna (# komentari) | <!-- komentari --> |
| Usvajanje u DevOpsu | Univerzalni standard (Kubernetes, CI/CD) | Univerzalni API standard | Konfiguracija Rust/Python paketa | Konfiguracija za naslijeđeni korporativni softver |
| Ponovna upotreba podataka | Izvorna sidra (&) i alijasi (*) | Nema (ručno dupliciranje) | Nema (ručno dupliciranje) | XML entiteti |
Uobičajeni načini oštećenja i vodič za heksadecimalni oporavak
Pogreška parsera: 'mapping values are not allowed here' ili pogreška uvlake.
Temeljni uzrok: Miješanje tabulatora s razmacima ili neusklađene razine uvlaka.
Oporavak: Pretvorite tabulatore u razmake i provjerite valjanost sintakse pomoću File2File YAML Formattera.
Sigurnosna analiza i vektori napada na parser
YAML parseri koji podržavaju oznake prilagođenih tipova (poput PyYAML-ove funkcije 'yaml.load()') povremeno su omogućavali udaljeno izvršavanje koda putem proizvoljnog instanciranja objekata.
Poznati vektori napada
- Proizvoljno izvršavanje koda kroz nesigurne oznake deserializacije objekata (npr. '!!python/object/apply').
- Bombe širenja entiteta (ekvivalent milijarde smijeha koji koristi YAML sidra i alijase).
- Ranjivosti zabune tipova zbog implicitnog parsiranja boolean vrijednosti i vremenskih oznaka.
Najbolje obrambene prakse:
Povijesni izvori i prekretnice
Ključne prednosti
- Neprikosnoveni standard za modernu računalnu infrastrukturu u oblaku: koristi se univerzalno u Kubernetes manifestima, Docker Compose-u i GitHub Actions.
- Čista, čitljiva sintaksa: eliminira nered vitičastih zagrada, uglatih zagrada i navodnika kroz intuitivno uvlačenje.
- Podržava reference i sidra (&anchor / *anchor) za ponovno korištenje ponavljajućih konfiguracijskih blokova bez dupliciranja.
Tehnička ograničenja i nedostaci
- Osjetljiv na razmake: slučajna tabulator (tab) ili jedan dodatni razmak mogu narušiti hijerarhiju dokumenta ili uzrokovati pogreške pri parsiranju.
- Ozloglašeni bugovi pretvaranja tipova: nenavodnici poput 'no', 'on', 'yes' ili kodovi država ('NO' za Norvešku) mogu tiho postati boolean vrijednosti.
- Znatno manja brzina parsiranja u usporedbi s binarnim formatima ili strogim JSON-om.
Zanimljive tehničke činjenice
- YAML je izvorno značio 'Yet Another Markup Language', ali je u šali preimenovan u rekurzivni akronim 'YAML Ain't Markup Language' kako bi se naglasila serijalizacija podataka.
- „Problem Norveške" (Norway Problem) poznati je programski bug u kojem je kod države 'NO' u YAML datoteci analiziran kao logička vrijednost 'false'.
- Svaka valjana JSON datoteka na svijetu ujedno je i 100% valjana YAML datoteka.
Često postavljana tehnička pitanja
Za što se koristi YAML?
YAML je primarni konfiguracijski jezik za računalstvo u oblaku, primjenu Kubernetes klastera, Docker Compose datoteke, radne procese GitHub Actions i softverske postavke.
Mogu li koristiti tabulatore u YAML datotekama?
Ne. Službena YAML specifikacija strogo zabranjuje upotrebu znakova tabulatora za uvlake; uvijek morate koristiti razmake (obično 2 razmaka po razini).
Kako mogu pretvoriti YAML u JSON?
YAML datoteke možete jednim klikom pretvoriti u čist, provjeren JSON pomoću alata File2File.app izravno u svom web pregledniku uz potpunu privatnost.
Povezani parovi konverzije za YAML
Pretvaranje YAML konfiguracijskih datoteka u JSON format prevodi tekstualne strukture čitljive ljudima u strogo čitljive objekte za web aplikacije.
Pretvaranje JSON konfiguracijskih datoteka u YAML format transformira krute programatske strukture podataka u čiste dokumente čitljive ljudima koje sistem administratori mogu znatno lakše uređivati.