YAML konfigūracija (.yaml)

YAML Standartinis

YAML Ain't Markup Language (YAML) yra dominuojantis duomenų serializavimo formatas šiuolaikiniam „DevOps", debesijos infrastruktūrai („Kubernetes", „Docker Compose") ir CI/CD automatizavimui, akcentuojant skaitomumą žmonėms per švarų tarpų įtraukimą.

Konvertuoti YAML į JSON

Nemokamas YAML į JSON konverteris naršyklėje. Konvertuokite failus akimirksniu savo įrenginyje.

Tikrinti ir metaduomenys

Operacinės sistemos ir failų analizatoriai atpažįsta YAML failus tikrindami pradinę dvejetainę baitų seką:

Pasirinkite arba nuvilkite failus čia

100% privatus konvertavimas naršyklėje - failai niekada nepalieka jūsų įrenginio

arba įklijuokite Ctrl+V
Nulinio tinklo perdavimo privatumo garantija: 0 baitų įkelta į išorinius serverius. Visas apdorojimas vyko vietoje, jūsų naršyklės smėlio dėžėje (sandbox).

Baitų lygio antraštės parašas (magiškieji baitai)

Operacinės sistemos ir failų analizatoriai atpažįsta YAML failus tikrindami pradinę dvejetainę baitų seką:

ŠEŠIOLIKTAINIS PARAŠAS (POSLINKIS 0):

2D 2D 2D 0A

ASCII ATVAIZDAVIMAS: ---\n

Standartizacija: YAML 1.2.2 Specification

Techninės specifikacijos

Konteinerio architektūraIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
GlaudinimasUncompressed text stream
Baitų seka (Endianness)UTF-8 / Unicode text stream
Spalvų erdvėsN/A (Data Serialization)
Kanalai ir struktūraMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Maksimalūs matmenysUnbounded document size (supports multi-document streams separated by '---')
SkaidrumasNone
Srautas ir progresyvusis įkėlimasMulti-document streams allow sequential document-by-document processing

Techninė palyginimo matrica: YAML vs konkurentai

Techninis atributasYAML (Dabartinis)JSONTOMLXML
Sintaksės stiliusĮtraukos tarpų hierarchijaGriežti skliaustai ir kabutėsLentelės ir raktas=reikšmė porosIšsamios atidaromos / uždaromos žymos
Komentarų palaikymasVietinis (# komentarai)Komentarai neleidžiamiVietinis (# komentarai)<!-- komentarai -->
DevOps pritaikymasUniversalus standartas („Kubernetes", CI/CD)Universalus API standartas„Rust" / „Python" paketo konfigūracijaĮmonių pasenusi konfigūracija
Duomenų pakartotinis naudojimasVietiniai inkarai (&) ir pseudonimai (*)Nėra (rankinis dubliavimas)Nėra (rankinis dubliavimas)XML elementai

Dažni sugadinimo režimai ir šešioliktainio atkūrimo vadovas

Analizatoriaus klaida: „mapping values are not allowed here" arba įtraukos klaida.

Pirminė priežastis: Tabuliacijų maišymas su tarpais arba nesuderinti įtraukos lygiai.

Atkūrimas: Konvertuokite tabuliacijas į tarpus ir patvirtinkite sintaksę naudodami „File2File YAML" formatuotuvą.

Saugumo analizė ir analizatoriaus atakos vektoriai

YAML analizatoriai, palaikantys pasirinktinio tipo žymas (kaip PyYAML „yaml.load()"), istoriškai leido vykdyti nuotolinį kodą per savavališką objektų instancijavimą.

Žinomi atakos vektoriai

  • Savavališkas kodo vykdymas naudojant nesaugių objektų deserializavimo žymas (pvz., „!!python/object/apply").
  • Elementų plėtros bombos (milijardo juokų atitikmuo naudojant YAML inkarus ir pseudonimus).
  • Tipo painiavos pažeidimai dėl netiesioginio Būlio reikšmių ir laiko žymų analizavimo.

Geriausia apsaugos praktika:

Istorinė kilmė ir svarbiausi etapai

2021Išleista YAML 1.2.2 versija, patikslinanti JSON suderinamumą ir oficialius gramatikos apibrėžimus.
2009YAML 1.2 standartizuoja YAML kaip griežtą JSON viršinuką, reiškiantį, kad visi galiojantys JSON yra galiojantys YAML.
2001Clark Evans, Ingy döt Net ir Oren Ben-Kiki sukuria YAML kaip žmogui draugišką XML alternatyvą.

Pagrindiniai privalumai

  • Neginčijamas šiuolaikinės debesijos infrastruktūros standartas: naudojamas visuotinai „Kubernetes" manifestuose, „Docker Compose" ir „GitHub Actions".
  • Švari, įskaitoma sintaksė: pašalina skliaustų, laužtinių skliaustų ir kabučių netvarką per intuityvų įtraukimą.
  • Palaiko nuorodas ir gaires (&anchor / *anchor) pakartotinai naudoti pasikartojančius konfigūracijos blokus be dubliavimo.

Techniniai apribojimai ir trūkumai

  • Jautrus tarpams: atsitiktinė tabuliacija arba vienas papildomas tarpas gali sugadinti dokumento hierarchiją arba sukelti analizavimo klaidas.
  • Pagarsėjusios tipo pertvarkymo klaidos: neįkabinti žodžiai, tokie kaip „no", „on", „yes" arba šalies kodai („NO" Norvegijai), gali tyliai tapti Būlio reikšmėmis.
  • Žymiai lėtesnis analizavimo greitis lyginant su dvejetainiais formatais arba griežtu JSON.

Įdomūs techniniai faktai

  • YAML iš pradžių reiškė „Yet Another Markup Language", tačiau vėliau buvo pašmaikštaujant pervadintas į rekursyvų akronimą „YAML Ain't Markup Language", siekiant pabrėžti duomenų serializavimą.
  • „Norvegijos problema" yra garsi programavimo klaida, kai šalies kodas „NO" YAML faile buvo išanalizuotas kaip Būlio reikšmė „false".
  • Kiekvienas pasaulyje galiojantis JSON failas tuo pačiu yra ir 100% galiojantis YAML failas.

Dažniausiai užduodami techniniai klausimai

Kam naudojamas YAML?

YAML yra pagrindinė debesų kompiuterijos, „Kubernetes“ klasterio diegimo, „Docker Compose“ failų, „GitHub Actions“ darbo eigų ir programinės įrangos nustatymų konfigūracijos kalba.

Ar galiu YAML failuose naudoti tabuliaciją (tabs)?

Ne. Oficialioje YAML specifikacijoje griežtai draudžiama atitraukimui (indentacijai) naudoti tabuliacijos simbolius; visada privalote naudoti tarpus (paprastai 2 tarpus vienam lygiui).

Kaip galiu konvertuoti YAML į JSON?

Naudodami File2File.app tiesiogiai savo interneto naršyklėje ir užtikrindami visišką privatumą, vienu paspaudimu galite konvertuoti YAML failus į švarų, patvirtintą JSON.