YAML konfiguracija (.yaml)

YAML Standardno

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.

Конвертујте YAML у JSON

Бесплатан YAML у JSON конвертор у прегледачу. Конвертујте фајлове тренутно без слања на сервер уз 100% приватност.

Pregledaj i metapodaci

Operativni sistemi i analizatori datoteka identifikuju YAML datoteke proverom početnog binarnog niza bajtova:

Изаберите или превуците датотеке овде

100% приватна конверзија у прегледачу – датотеке никада не напуштају ваш уређај

или налепите Ctrl+V
100% Локална обрада у прегледачу 0 бајтова послато спољним серверима. Сва обрада је извршена локално у безбедном окружењу вашег прегледача.

Potpis zaglavlja na nivou bajtova (Magic Bytes)

Operativni sistemi i analizatori datoteka identifikuju YAML datoteke proverom početnog binarnog niza bajtova:

HEX POTPIS (OFFSET 0):

2D 2D 2D 0A

ASCII REPREZENTACIJA: ---\n

Standardizacija: YAML 1.2.2 Specification

Tehničke specifikacije

Arhitektura kontejneraIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
KompresijaUncompressed text stream
Bajtni redosled (Endianness)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 '---')
TransparentnostNone
Strimovanje i progresivno učitavanjeMulti-document streams allow sequential document-by-document processing

Tehnička matrica poređenja: YAML vs Konkurenti

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-uUniverzalni standard (Kubernetes, CI/CD)Univerzalni API standardKonfiguracija 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 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 dereferenciranja 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.

Defanzivne najbolje prakse:

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.
2001Klark Evans, Ingi dot Net i Oren Ben-Kiki kreiraju YAML kao alternativu XML-u prilagođenu ljudima.

Ključne prednosti

  • Neprikosnoveni standard za modernu klaud infrastrukturu: koristi se univerzalno u Kubernetes manifestima, Docker Compose-u i GitHub Actions-u.
  • Č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.
  • Ozloglašene greške u konverziji tipova: reči pod navodnicima poput 'no', 'on', 'yes' ili kodovi država ('NO' za Norvešku) mogu tiho postati boolean 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.
  • „Norveški problem" 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.