YAML konfiguracija (.yaml)
Specifikacija StandardYAML Ain't Markup Language (YAML) je dominantan format za serijalizaciju podataka za moderni DevOps, klaud infrastrukturu (Kubernetes, Docker Compose) i CI/CD automatizaciju, naglašavajući čitljivost za ljude kroz čisto uvlačenje razmacima.
Konvertujte YAML u JSON
Besplatan konvertor YAML u JSON u pregledaču. Konvertujte datoteke odmah na svom uređaju.
Pregled i metapodaci
Operativni sistemi i analizatori datoteka identifikuju YAML datoteke proverom početnog binarnog niza bajtova:
Potpis zaglavlja na nivou bajtova (magični bajtovi)
Operativni sistemi i analizatori datoteka identifikuju YAML datoteke proverom početnog binarnog niza bajtova:
HEKSADECIMALNI POTPIS (OFFSET 0):
2D 2D 2D 0AASCII REPREZENTACIJA: ---\n
Standardizacija: Specifikacija YAML 1.2.2
Tehničke specifikacije
| Arhitektura kontejnera | Čitljiv format za serijalizaciju podataka zasnovan na uvlačenju, nadskup JSON-a koji podržava sidra i alijase |
| Kompresija | Nekomprimovani tekstualni tok |
| Bajtni redosled (Endianness) | Tekstualni tok UTF-8 / Unicode |
| Prostori boja | Nije primenljivo (serijalizacija podataka) |
| Kanali i struktura | Mapiranja (rečnici ključ-vrednost), sekvence (liste), skalarni tipovi (nizovi znakova, brojevi, logičke vrednosti) i sidra (&ref/*ref) |
| Maksimalne dimenzije | Neograničena veličina dokumenta (podržani su tokovi s više dokumenata razdvojenih sa „---“) |
| Transparentnost | Nema |
| Strimovanje i progresivno učitavanje | Tokovi s više dokumenata omogućavaju njihovu sekvencijalnu obradu, jedan po jedan |
Tehnička matrica poređenja: YAML u odnosu na konkurente
| Tehnički atribut | YAML (Trenutno) | JSON | TOML | XML |
|---|---|---|---|---|
| Stil sintakse | Hijerarhija razmaka za uvlačenje | Stroge uglaste zagrade i navodnici | Tabele i ključ=vrednost parovi | Opširne otvarajuće/zatvarajuće oznake |
| Podrška za komentare | Izvorna (# komentari) | Komentari nisu dozvoljeni | Izvorna (# komentari) | <!-- komentari --> |
| Usvajanje u DevOps-u | Podrška se razlikuje u zavisnosti od programa. | Podrška se razlikuje u zavisnosti od programa. | Konfiguracija Rust/Python paketa | Nasleđena preduzetnička konfiguracija |
| Ponovno korišćenje podataka | Izvorna sidra (&) i alijasi (*) | Nema (ručno dupliranje) | Nema (ručno dupliranje) | XML entiteti |
Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak
Greška parsera: 'mapping values are not allowed here' ili greška uvlačenja.
Osnovni uzrok: Mešanje tabulatora sa razmacima ili neusklađeni nivoi uvlačenja.
Oporavak: Pretvorite tabulatore u razmake i potvrdite sintaksu pomoću File2File.app YAML Formatter-a.
Bezbednosna analiza i vektori napada parsera
YAML parseri koji podržavaju oznake prilagođenih tipova (poput funkcije 'yaml.load()' u PyYAML-u) istorijski su omogućavali izvršavanje udaljenog koda putem instanciranja proizvoljnih objekata.
Poznati vektori napada
- Izvršavanje proizvoljnog koda kroz nesigurne oznake za deserijalizaciju objekata (npr. '!!python/object/apply').
- Eksplozije širenja entiteta (ekvivalent milijarde smeha korišćenjem YAML sidra i alijasa).
- Ranjivosti mešanja tipova usled implicitnog parsiranja boolean vrednosti i vremenskih oznaka.
Najbolje prakse za zaštitu: Uvek koristite bezbedne YAML parsere ('yaml.safe_load()' u Python-u) i postavite ograničenja dubine proširivanja sidara.
Istorijat i prekretnice
Ključne prednosti
- YAML se često koristi u infrastrukturnim alatima, ali podrška i ponašanje zavise od implementacije.
- Čista, čitljiva sintaksa: eliminiše nered u vidu zagrada, uglastih zagrada i navodnika kroz intuitivno uvlačenje.
- Podržava reference i sidra (&anchor / *anchor) za ponovno korišćenje ponovljenih konfiguracionih blokova bez dupliranja.
Tehnička ograničenja i nedostaci
- Osetljivo na razmake: slučajni tabulator ili jedan dodatni razmak može pokvariti hijerarhiju dokumenta ili izazvati greške u parsiranju.
- Poznate greške u konverziji tipova: nenavodene reči kao što su 'no', 'on', 'yes' ili kodovi država ('NO' za Norvešku) mogu neprimetno da postanu logičke vrednosti.
- Znatno manja brzina parsiranja u poređenju sa binarnim formatima ili strogim JSON-om.
Zanimljivosti
- YAML je originalno značilo 'Yet Another Markup Language', ali je šaljivo preimenovano u rekurzivni akronim 'YAML Ain't Markup Language' da bi se naglasila serijalizacija podataka.
- „Problem Norveške“ je čuvena programska greška gde je kod države 'NO' u YAML datoteci parsiran kao boolean vrednost 'false'.
- Svaka validna JSON datoteka na svetu je istovremeno i 100% validna YAML datoteka.
Često postavljana tehnička pitanja
Čemu služi YAML?
YAML je primarni konfiguracioni jezik za računarstvo u oblaku, primenu Kubernetes klastera, Docker Compose fajlove, GitHub Actions radne tokove i softverska podešavanja.
Mogu li da koristim tabulare (tabs) u YAML fajlovima?
Ne. Zvanična YAML specifikacija strogo zabranjuje upotrebu karaktera tabulatora za uvlačenje; uvek morate koristiti razmake (obično 2 razmaka po nivou).
Kako mogu da konvertujem YAML u JSON?
Možete da konvertujete YAML fajlove u čist, validiran JSON jednim klikom koristeći File2File.app direktno u vašem veb pretraživaču uz potpunu privatnost.
Povezani parovi konverzije za YAML
Pretvaranje YAML konfiguracionih datoteka u JSON format prevodi čitljive tekstualne strukture sa uvlačenjem u stroge objekte koje mašina može da parsira za veb aplikacije.
Pretvaranje JSON konfiguracionih datoteka u YAML format transformiše krute strukture programskih podataka u čiste dokumente čitljive ljudima koje sistemski administratori mogu mnogo lakše uređivati.