YAML-konfiguratsioon (.yaml)

YAML Standard

YAML Ain't Markup Language (YAML) on kaasaegse DevOps-i, pilveinfrastruktuuri (Kubernetes, Docker Compose) ja CI/CD automatiseerimise domineeriv andmete järjestusvorming, mis rõhutab inimeste loetavust puhta tühikutega taande abil.

Teisenda formaadist YAML formaati JSON

Tasuta YAML -> JSON konverter brauseris. Teisenda faile koheselt oma seadmes.

Kontrolli ja metaandmed

Operatsioonisüsteemid ja failianalüsaatorid tuvastavad YAML faile, kontrollides algset binaarset baidijada:

Vali või lohista failid siia

100% privaatne konversioon brauseris - failid ei lahku kunagi sinu seadmest

või kleebi Ctrl+V
Null-võrguülekande privaatsusgarantii: 0 baiti laaditakse üles välistesse serveritesse. Kogu töötlemine toimub lokaalselt sinu brauseri liivakastis.

Baidi-taseme päise allkiri (maagilised baidid)

Operatsioonisüsteemid ja failianalüsaatorid tuvastavad YAML faile, kontrollides algset binaarset baidijada:

HEX-ALLKIRI (NIHE 0):

2D 2D 2D 0A

ASCII-ESITUS: ---\n

Standardiseerimine: YAML 1.2.2 Specification

Tehnilised andmed

Konteineri arhitektuurIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
TihendamineUncompressed text stream
Baitide järjekord (Endianness)UTF-8 / Unicode text stream
VärviruumidN/A (Data Serialization)
Kanalid ja struktuurMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Max mõõtmedUnbounded document size (supports multi-document streams separated by '---')
LäbipaistvusNone
Voogedastus ja progressiivsusMulti-document streams allow sequential document-by-document processing

Tehniline võrdlusmaatriks: YAML vs konkurendid

Tehniline atribuutYAML (Praegune)JSONTOMLXML
Süntaksi stiilTaande tühikute hierarhiaRanged sulud ja jutumärgidTabelid ja võti=väärtus paaridMahukad avamis-/sulgemissildid
Kommentaaride tugiOmane (# kommentaarid)Kommentaarid pole lubatudOmane (# kommentaarid)<!-- kommentaarid -->
DevOps-i kasutuselevõttUniversaalne standard (Kubernetes, CI/CD)Universaalne API standardRusti/Pythoni paketi seadistusEttevõtte pärandseadistus
Andmete taaskasutusOmased ankrud (&) ja aliasteed (*)Puudub (käsitsi dubleerimine)Puudub (käsitsi dubleerimine)XML olemid

Levinud riknemisvead ja heksataaste juhend

Parseri viga: 'mapping values are not allowed here' või taandeviga.

Juurpõhjus: Tabulaatorite segamine tühikutega või valesti joondatud taandetasemed.

Taastamine: Teisenda tabulaatorid tühikuteks ja kontrolli süntaksit File2File YAML-i vormindaja abil.

Turvaanalüüs ja parsimisründevektorid

YAML-i parserid, mis toetavad kohandatud tüübisilte (nagu PyYAML-i 'yaml.load()'), lubasid ajalooliselt kaugkoodi käivitamist meelevaldse objekti loomise kaudu.

Teadaolevad ründavektorid

  • Meelevaldne koodi käivitamine ebaturvaliste objektide deserialiseerimise siltide kaudu (nt '!!python/object/apply').
  • Olemite laiendamise pommid (miljoni naeru ekvivalent, mis kasutab YAML-i ankruid ja aliaseid).
  • Tüübi segaduse haavatavused kaudse tõeväärtuste ja ajatemplite parsimise tõttu.

Kaitsealased parimad tavad:

Ajalooline taust ja verstapostid

2021Avaldatakse YAML 1.2.2 revisjon, mis täpsustab JSON-i ühilduvust ja formaalse grammatika määratlusi.
2009YAML 1.2 standardiseerib YAML-i kui JSON-i range ülemhulga, mis tähendab, et kogu kehtiv JSON on kehtiv YAML.
2001Clark Evans, Ingy döt Net ja Oren Ben-Kiki loovad YAML-i kui inimajasõbraliku alternatiivi XML-ile.

Peamised eelised

  • Vaieldamatu standard kaasaegse pilveinfrastruktuuri jaoks: kasutatakse universaalselt Kubernetese manifestides, Docker Compose'is ja GitHub Actionsis.
  • Puhas, loetav süntaks: kõrvaldab loogeliste sulgude, kantiliste sulgude ja jutumärkide segaduse intuitiivse taande abil.
  • Toetab viiteid ja ankruid (&anchor / *anchor) korduvate konfiguratsiooniplokkide taaskasutamiseks ilma dubleerimiseta.

Tehnilised piirangud ja puudused

  • Tühikutundlik: juhuslik tabulaator või üksainus lisatühik võib dokumendi hierarhiat rikkuda või põhjustada parsimisvigu.
  • Kurikuulsad tüübiteisenduse vead: jutumärkideta sõnad nagu 'no', 'on', 'yes' või riigikoodid ('NO' Norra jaoks) võivad märkamatult muutuda tõeväärtusteks.
  • Märgatavalt aeglasem parsimiskiirus võrreldes binaarvormingute või range JSON-iga.

Huvitavaid tehnilisi fakte

  • YAML tähendas algselt 'Yet Another Markup Language', kuid nimetati naljatlevalt ümber rekursiivseks akronüümiks 'YAML Ain't Markup Language', et rõhutada andmete järjestamist.
  • 'Norra probleem' on kuulus programmeerimisvea, kus YAML-failis olev riigikood 'NO' analüüsiti tõeväärtuseks 'false'.
  • Kõik maailma kehtivad JSON-failid on samal ajal ka 100% kehtivad YAML-failid.

Korduma kippuvad tehnilised küsimused

Milleks YAML-i kasutatakse?

YAML on pilvandmetöötluse, Kubernetes klastri juurutamise, Docker Compose failide, GitHub Actionsi töövoogude ja tarkvaraseadete peamine konfiguratsioonikeel.

Kas ma saan YAML-failides kasutada tabulatsioone (tab)?

Ei. Ametlik YAML-i spetsifikatsioon keelab rangelt tabulatsioonimärkide kasutamise taandeks; peate alati kasutama tühikuid (tavaliselt 2 tühikut taseme kohta).

Kuidas ma saan YAML-i JSON-iks konverteerida?

Saate YAML-failid ühe klõpsuga teisendada puhtaks, valideeritud JSON-iks, kasutades File2File.app-i otse oma veebibrauseris täieliku privaatsusega.