YAML konfiguracija (.yaml)

YAML Standard

YAML Ain't Markup Language (YAML) je prevladujoč format za serializacijo podatkov v sodobnem DevOpsu, v oblaku (Kubernetes, Docker Compose) in avtomatizaciji CI/CD, ki poudarja berljivost za človeka z zarezami in čistim zamikom presledkov.

Pretvori YAML v JSON

Brezplačen pretvornik iz YAML v JSON v brskalniku. Pretvorite datoteke takoj v svoji napravi.

Pregled in metapodatki

Operacijski sistemi in analizatorji datotek identificirajo datoteke YAML s pregledom vodilnega binarnega zaporedja bajtov:

Izberite ali povlecite datoteke sem

100-odstotno zasebna pretvorba v brskalniku - datoteke nikoli ne zapustijo vaše naprave

ali prilepi Ctrl+V
Jamstvo o zasebnosti brez prenosa podatkov v omrežje: 0 bajtov naloženih na zunanje strežnike. Vsa obdelava je potekala lokalno v varnem območju vašega brskalnika.

Podpis glave na ravni bajtov (Čarobni bajti)

Operacijski sistemi in analizatorji datotek identificirajo datoteke YAML s pregledom vodilnega binarnega zaporedja bajtov:

PODPIS HEX (ZAMIK 0):

2D 2D 2D 0A

REPREZENTACIJA ASCII: ---\n

Standardizacija: YAML 1.2.2 Specification

Tehnične specifikacije

Arhitektura vsebnikaIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
StiskanjeUncompressed text stream
Vrstni red bajtovUTF-8 / Unicode text stream
Barvni prostoriN/A (Data Serialization)
Kanali in strukturaMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Največje dimenzijeUnbounded document size (supports multi-document streams separated by '---')
ProsojnostNone
Pretočno in progresivno predvajanjeMulti-document streams allow sequential document-by-document processing

Tehnična primerjalna matrika: YAML proti konkurenci

Tehnični atributYAML (Trenutno)JSONTOMLXML
Slog skladnjeHierarhija presledkov zamikaStrogi oklepaji in narekovajiTabele in pari ključ=vrednostObsežne začetne/končne oznake
Podpora za komentarjeIzvorna (# komentarji)Komentarji niso dovoljeniIzvorna (# komentarji)<!-- komentarji -->
Posvojitev v DevOpsuUniverzalni standard (Kubernetes, CI/CD)Univerzalni standard APIKonfiguracija paketov Rust/PythonPodjetniška podedovana konfiguracija
Ponovna uporaba podatkovIzvorna sidra (&) in psevdonimi (*)Brez (ročno podvajanje)Brez (ročno podvajanje)Entitete XML

Pogosti načini okvar in vodič za heksadecimalno obnovo

Napaka razčlenjevalnika: 'mapping values are not allowed here' ali napaka zaradi zamika.

Glavni vzrok: Mešanje tabulatorjev s presledki ali neporavnane ravni zamikov.

Sanacija: Pretvorite tabulatorje v presledke in preverite skladnjo z uporabo oblikovalnika YAML File2File.

Varnostna analiza in napadalni vektorji razčlenjevalnika

Razčlenjevalniki YAML, ki podpirajo oznake po meri (kot je PyYAML-ov 'yaml.load()'), so v preteklosti omogočali izvajanje oddaljene kode prek poljubnega nameščanja objektov.

Znani vektorji napada

  • Izvajanje poljubne kode prek oznak za nestvarno deserializacijo objektov (npr. '!!python/object/apply').
  • Bombe razširitve entitet (ekvivalent milijarde smehljajev z uporabo sider in psevdonimov YAML).
  • Ranljivosti zaradi zamenjave tipov zaradi implicitnega razčlenjevanja logičnih vrednosti in časovnih žigov.

Obrambne najboljše prakse:

Zgodovinski izvor in mejniki

2021Objavljena revizija YAML 1.2.2, ki izboljšuje združljivost z JSON-om in formalne definicije slovnice.
2009YAML 1.2 standardizira YAML kot strog nadmnožni format za JSON, kar pomeni, da je vsak veljaven JSON veljaven YAML.
2001Clark Evans, Ingy döt Net in Oren Ben-Kiki ustvarijo YAML kot človeku prijazno alternativo za XML.

Ključne prednosti

  • Nesporni standard za sodobno infrastrukturo v oblaku: uporablja se povsod v manifestih Kubernetes, Docker Compose in GitHub Actions.
  • Čista in berljiva skladnja: odpravlja navlako oklepajev, oglatih oklepajev in narekovajev z intuitivnim zamikom.
  • Podpira sklice in sidra (&anchor / *anchor) za ponovno uporabo ponavljajočih se konfiguracijskih blokov brez podvajanja.

Tehnične omejitve in slabosti

  • Občutljivost na presledke: naključni tabulator ali en sam dodaten presledek lahko pokvari hierarhijo dokumenta ali povzroči napake pri razčlenjevanju.
  • Zloglasni hrošči pri pretvarjanju tipov: neovirane besede, kot so 'no', 'on', 'yes' ali oznake držav ('NO' za Norveško), lahko tiho postanejo logične vrednosti.
  • Bistveno manjša hitrost razčlenjevanja v primerjavi z binarnimi formati ali strogim JSON-om.

Zanimive tehnične malenkosti

  • YAML je prvotno pomenil 'Yet Another Markup Language', vendar je bil v šali preimenovan v rekurzivni akronim 'YAML Ain't Markup Language', da bi poudaril serializacijo podatkov.
  • »Norveški problem« je znan programerski hrošč, pri katerem je bila oznaka države 'NO' v datoteki YAML razčlenjena kot logična vrednost 'false'.
  • Vsaka veljavna datoteka JSON na svetu je hkrati tudi 100-odstotno veljavna datoteka YAML.

Pogosta tehnična vprašanja

Za kaj se uporablja YAML?

YAML je glavni konfiguracijski jezik za računalništvo v oblaku, uvajanje gruč Kubernetes, datoteke Docker Compose, poteke dela GitHub Actions in nastavitve programske opreme.

Ali lahko v datotekah YAML uporabljam tabulatorje?

Ne. Uradna specifikacija YAML strogo prepoveduje uporabo znakov tabulatorja za zamik; vedno morate uporabljati presledke (običajno 2 presledka na raven).

Kako lahko pretvorim YAML v JSON?

Datoteke YAML lahko z enim klikom in popolno zasebnostjo pretvorite v čist, preverjen JSON z uporabo File2File.app neposredno v vašem spletnem brskalniku.