Configurație YAML (.yaml)

Specificația Standard

YAML Ain't Markup Language (YAML) este formatul dominant de serializare a datelor pentru DevOps modern, infrastructură cloud (Kubernetes, Docker Compose) și automatizare CI/CD, punând accentul pe lizibilitatea umană prin indentare clară cu spații.

Convertește din YAML în JSON

Convertor gratuit din YAML în JSON direct în browser. Convertește fișiere instantaneu pe dispozitivul tău.

Inspectare și metadate

Sistemele de operare și analizatoarele de fișiere identifică fișierele YAML prin inspectarea secvenței binare inițiale:

Selectează sau plasează fișierele aici

Privat - fișierele nu părăsesc niciodată dispozitivul tău

sau lipește Ctrl+V
Garanție de confidențialitate: nicio transmisie prin rețea: 0 octeți încărcați pe servere externe. Toată procesarea a avut loc local în sandbox-ul browserului tău.

Semnătura antetului la nivel de octet (octeți magici)

Sistemele de operare și analizatoarele de fișiere identifică fișierele YAML prin inspectarea secvenței binare inițiale:

SEMNĂTURĂ HEXAZECIMALĂ (DECALAJ 0):

2D 2D 2D 0A

REPREZENTARE ASCII: ---\n

Standardizare: Specificația YAML 1.2.2

Specificații tehnice

Arhitectură containerFormat de serializare a datelor, ușor de citit, bazat pe indentare și extins față de JSON, cu suport pentru ancore și aliasuri
CompresieFlux de text necomprimat
Ordinea octețilorFlux de text UTF-8 / Unicode
Spații de culoareNu se aplică (serializare de date)
Canale și structurăMapări (dicționare cheie-valoare), secvențe (liste), tipuri scalare (șiruri, numere, valori booleene) și ancore (&ref/*ref)
Dimensiuni maximeDimensiune nelimitată a documentului (acceptă fluxuri cu mai multe documente, separate prin „---”)
TransparențăNiciuna
Streaming și progresivFluxurile cu mai multe documente permit procesarea secvențială, document cu document

Matrice de comparație tehnică: YAML vs. concurenți

Atribut tehnicYAML (Curent)JSONTOMLXML
Stil de sintaxăIerarhie exprimată prin indentarea cu spațiiParanteze și ghilimele obligatoriiTabele și perechi cheie=valoareEtichete de deschidere/închidere verboase
Suport pentru comentariiNativ (comentarii #)Nu sunt permise comentariiNativ (comentarii #)<!-- comentarii -->
Adopție în DevOpsCompatibilitatea diferă de la un program la altul.Compatibilitatea diferă de la un program la altul.Configurare pachete Rust/PythonConfigurare legacy enterprise
Reutilizare a datelorAncore (&) și aliasuri (*) nativeNiciuna (duplicare manuală)Niciuna (duplicare manuală)Entități XML

Moduri comune de corupție și ghid de recuperare hexazecimală

Eroare de analizor: 'mapping values are not allowed here' sau eroare de indentație.

Cauză principală: Amestecarea caracterelor Tab cu spații sau niveluri de indentație nealiniate.

Recuperare: Transformă taburile în spații și validează sintaxa cu Formatorul YAML din File2File.app.

Analiză de securitate și vectori de atac asupra parserului

Analizoarele YAML care acceptă etichete de tip personalizate (cum ar fi 'yaml.load()' din PyYAML) permiteau istoric execuția de cod la distanță prin instanțierea arbitrară de obiecte.

Vectori de atac cunoscuți

  • Execuție de cod arbitrar prin etichete nesigure de deserializare a obiectelor (de ex., '!!python/object/apply').
  • Atacuri de expansiune a aliasurilor (echivalentul atacului „Billion Laughs”, folosind ancore și aliasuri YAML).
  • Vulnerabilități de confuzie a tipurilor datorate analizei implicite a valorilor booleane și a marcajelor temporale.

Cele mai bune practici de securitate: Folosește întotdeauna parseri YAML siguri (de exemplu, „yaml.safe_load()” în Python) și impune limite pentru adâncimea de extindere a ancorelor.

Origini istorice și repere

2021Publicarea revizuirii YAML 1.2.2, care perfecționează compatibilitatea JSON și definițiile gramaticale formale.
2009YAML 1.2 standardizează YAML ca superset strict al JSON, ceea ce înseamnă că tot JSON-ul valid este și YAML valid.
2001Clark Evans, Ingy döt Net și Oren Ben-Kiki creează YAML ca o alternativă prietenoasă cu utilizatorul uman la XML.

Avantaje cheie și beneficii

  • YAML este folosit frecvent în instrumente de infrastructură, dar compatibilitatea și comportamentul depind de implementare.
  • Sintaxă curată și lizibilă: elimină aglomerația de acolade, paranteze drepte și ghilimele prin indentație intuitivă.
  • Acceptă referințe și ancore (&anchor / *anchor) pentru a reutiliza blocuri de configurare repetate fără duplicare.

Limitări tehnice și dezavantaje

  • Sensibil la spațiile albe: un caracter Tab introdus accidental sau un singur spațiu în plus poate corupe ierarhia documentului sau poate cauza erori de analiză.
  • Erori notorii de conversie a tipurilor: cuvintele fără ghilimele precum 'no', 'on', 'yes' sau codurile de țară ('NO' pentru Norvegia) se pot transforma fără avertisment în valori booleene.
  • Viteză de analiză semnificativ mai lentă în comparație cu formatele binare sau JSON-ul strict.

Curiozități tehnice interesante

  • YAML a însemnat inițial 'Yet Another Markup Language', dar a fost redenumit ironic în acronimul recursiv 'YAML Ain't Markup Language' pentru a sublinia serializarea datelor.
  • 'Problema Norvegiei' este o eroare celebră de programare în care codul de țară 'NO' dintr-un fișier YAML a fost analizat ca valoare booleană 'false'.
  • Fiecare fișier JSON valid din lume este, de asemenea, în același timp un fișier YAML 100% valid.

Întrebări tehnice frecvente

Pentru ce este folosit YAML?

YAML este principalul limbaj de configurare pentru calculul în cloud, implementarea clusterelor Kubernetes, fișierele Docker Compose, fluxurile de lucru GitHub Actions și setările software.

Pot folosi tabulatori în fișierele YAML?

Nu. Specificația oficială YAML interzice strict folosirea caracterelor tab pentru indentare; folosește întotdeauna spații (de obicei, 2 pe nivel).

Cum pot converti YAML în JSON?

Poți converti fișiere YAML în JSON curat și validat, cu un singur clic, folosind File2File.app direct în browser.