YAML konfiguracija (.yaml)

YAML Standardno

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

Odaberite ili ispustite datoteke ovdje

100% privatna pretvorba u pregledniku - datoteke nikada ne napuštaju vaš uređaj

ili zalijepi Ctrl+V
Jamstvo privatnosti nulte mrežne transmisije: 0 bajtova učitano na vanjske poslužitelje. Sva obrada odvijala se lokalno u sandčiću vašeg preglednika.

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

ASCII PRIKAZ: ---\n

Standardizacija: YAML 1.2.2 Specification

Tehničke specifikacije

Arhitektura spremnikaIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
KompresijaUncompressed text stream
字节序UTF-8 / Unicode text stream
Prostori bojaN/A (Data Serialization)
Kanali i strukturaMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Maksimalne dimenzijeUnbounded document size (supports multi-document streams separated by '---')
ProzirnostNone
Streaming i progresivnoMulti-document streams allow sequential document-by-document processing

Tehnička matrica usporedbe: YAML vs Konkurencija

Tehnički atributYAML (Trenutno)JSONTOMLXML
Stil sintakseHijerarhija uvlaka bjelinamaStroge uglate zagrade i navodniciTablice i parovi ključ=vrijednostOpširne otvarajuće/zatvarajuće oznake
Podrška za komentareIzvorna (# komentari)Komentari nisu dopušteniIzvorna (# komentari)<!-- komentari -->
Usvajanje u DevOpsuUniverzalni standard (Kubernetes, CI/CD)Univerzalni API standardKonfiguracija Rust/Python paketaKonfiguracija za naslijeđeni korporativni softver
Ponovna upotreba podatakaIzvorna 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

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

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.