YAML konfiguracija (.yaml)

Specifikacija Standard

YAML 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:

Izaberite ili prevucite datoteke ovde

Privatno - datoteke nikada ne napuštaju vaš uređaj

ili nalepite Ctrl+V
Garancija privatnosti: bez prenosa podataka preko mreže 0 bajtova poslato spoljnim serverima. Sva obrada je izvršena lokalno u bezbednom okruženju vašeg pregledača.

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 0A

ASCII 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
KompresijaNekomprimovani tekstualni tok
Bajtni redosled (Endianness)Tekstualni tok UTF-8 / Unicode
Prostori bojaNije primenljivo (serijalizacija podataka)
Kanali i strukturaMapiranja (rečnici ključ-vrednost), sekvence (liste), skalarni tipovi (nizovi znakova, brojevi, logičke vrednosti) i sidra (&ref/*ref)
Maksimalne dimenzijeNeograničena veličina dokumenta (podržani su tokovi s više dokumenata razdvojenih sa „---“)
TransparentnostNema
Strimovanje i progresivno učitavanjeTokovi s više dokumenata omogućavaju njihovu sekvencijalnu obradu, jedan po jedan

Tehnička matrica poređenja: YAML u odnosu na konkurente

Tehnički atributYAML (Trenutno)JSONTOMLXML
Stil sintakseHijerarhija razmaka za uvlačenjeStroge uglaste zagrade i navodniciTabele i ključ=vrednost paroviOpširne otvarajuće/zatvarajuće oznake
Podrška za komentareIzvorna (# komentari)Komentari nisu dozvoljeniIzvorna (# komentari)<!-- komentari -->
Usvajanje u DevOps-uPodrška se razlikuje u zavisnosti od programa.Podrška se razlikuje u zavisnosti od programa.Konfiguracija Rust/Python paketaNasleđena preduzetnička konfiguracija
Ponovno korišćenje podatakaIzvorna 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

2021Objavljena revizija YAML 1.2.2, koja poboljšava JSON kompatibilnost i formalne definicije gramatike.
2009YAML 1.2 standardizuje YAML kao strogi nadskup JSON-a, što znači da je svaki validan JSON ujedno i validan YAML.
2001Clark Evans, Ingy döt Net i Oren Ben-Kiki kreiraju YAML kao alternativu XML-u prilagođenu ljudima.

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.