Configurazione YAML (.yaml)

Specifica Standard

YAML Ain't Markup Language (YAML) è il formato di serializzazione dei dati dominante per il DevOps moderno, l'infrastruttura cloud (Kubernetes, Docker Compose) e l'automazione CI/CD, che privilegia la leggibilità umana attraverso una pulita indentazione degli spazi bianchi.

Converti da YAML a JSON

Convertitore gratuito da YAML a JSON nel browser. Converti i file istantaneamente sul tuo dispositivo.

Ispeziona e metadati

I sistemi operativi e gli analizzatori di file identificano i file YAML ispezionando la sequenza di byte binari iniziale:

Seleziona o rilascia i file qui

Conversione 100% privata nel browser: i file non lasciano mai il tuo dispositivo

o incolla Ctrl+V
Garanzia di privacy con zero trasmissioni di rete: 0 byte caricati su server esterni. Tutta l'elaborazione è avvenuta localmente nella sandbox del tuo browser.

Firma dell'intestazione a livello di byte (Magic Bytes)

I sistemi operativi e gli analizzatori di file identificano i file YAML ispezionando la sequenza di byte binari iniziale:

FIRMA ESADECIMALE (OFFSET 0):

2D 2D 2D 0A

RAPPRESENTAZIONE ASCII: ---\n

Standardizzazione: Specifica YAML 1.2.2

Specifiche tecniche

Architettura del containerFormato di serializzazione dei dati basato sull'indentazione e leggibile dall'uomo, superset di JSON che supporta àncore e alias
CompressioneFlusso di testo non compresso
Endianness dei byteFlusso di testo UTF-8 / Unicode
Spazi coloreN/D (Serializzazione dei dati)
Canali e strutturaMapping (dizionari chiave-valore), sequenze (elenchi), tipi scalari (stringhe, numeri, booleani) e àncore (&ref/*ref)
Dimensioni massimeDimensioni del documento illimitate (supporta flussi multi-documento separati da '---')
TrasparenzaNessuna
Streaming e progressivoI flussi multi-documento consentono l'elaborazione sequenziale documento per documento

Matrice di confronto tecnico: YAML vs Concorrenti

Attributo tecnicoYAML (Corrente)JSONTOMLXML
Stile della sintassiGerarchia basata su spazi bianchi di indentazioneParentesi e virgolette rigoroseTabelle e coppie chiave=valoreTag di apertura/chiusura prolissi
Supporto ai commentiNativo (commenti con #)Nessun commento consentitoNativo (commenti con #)<!-- commenti -->
Adozione DevOpsStandard universale (Kubernetes, CI/CD)Standard API universaleConfigurazione pacchetti Rust/PythonConfigurazione enterprise legacy
Riutilizzo dei datiÀncore native (&) e Alias (*)Nessuno (duplicazione manuale)Nessuno (duplicazione manuale)Entità XML

Modalità di corruzione comuni e guida al recupero Hex

Errore del parser: 'mapping values are not allowed here' o errore di indentazione.

Causa principale: Combinazione di tabulatori e spazi o livelli di indentazione disallineati.

Ripristino: Converti i tabulatori in spazi e valida la sintassi utilizzando il formattatore YAML di File2File.

Analisi di sicurezza e vettori di attacco del parser

I parser YAML che supportano tag di tipo personalizzato (come 'yaml.load()' di PyYAML) storicamente consentivano l'esecuzione di codice da remoto tramite l'istanziazione arbitraria di oggetti.

Vettori di attacco noti

  • Esecuzione di codice arbitrario tramite tag di deserializzazione di oggetti non sicuri (ad es. '!!python/object/apply').
  • Attacchi di espansione di entità (l'equivalente del miliardo di risate tramite l'uso di àncore e alias YAML).
  • Vulnerabilità di confusione dei tipi dovute all'analisi implicita di booleani e timestamp.

Migliori pratiche difensive: Utilizza sempre parser YAML sicuri ('yaml.safe_load()' in Python) e applica limiti alla profondità di espansione delle àncore.

Origini storiche e tappe fondamentali

2021Pubblicata la revisione YAML 1.2.2, che perfeziona la compatibilità con JSON e le definizioni formali della grammatiche.
2009YAML 1.2 standardizza YAML come rigoroso superset di JSON, il che significa che qualsiasi JSON valido è un YAML valido.
2001Clark Evans, Ingy döt Net e Oren Ben-Kiki creano YAML come alternativa human-friendly a XML.

Vantaggi principali e pro

  • Lo standard indiscusso per l'infrastruttura cloud moderna: utilizzato universalmente nei manifesti Kubernetes, in Docker Compose e in GitHub Actions.
  • Sintassi pulita e leggibile: elimina il disordine di parentesi graffe, parentesi quadre e virgolette grazie a un'indentazione intuitiva.
  • Supporta riferimenti e àncore (&anchor / *anchor) per riutilizzare blocchi di configurazione ripetuti senza duplicazioni.

Limiti tecnici e svantaggi

  • Sensibile agli spazi bianchi: un singolo spazio extra o un tabulatore accidentale possono corrompere la gerarchia del documento o causare errori di analisi.
  • Noti bug di coercizione dei tipi: parole non racchiuse tra virgolette come 'no', 'on', 'yes' o codici paese ('NO' per la Norvegia) possono diventare silenziosamente booleani.
  • Velocità di analisi significativamente inferiore rispetto ai formati binari o al JSON rigoroso.

Curiosità tecniche interessanti

  • YAML originariamente stava per 'Yet Another Markup Language', ma è stato ribattezzato scherzosamente con l'acronimo ricorsivo 'YAML Ain't Markup Language' per sottolineare la serializzazione dei dati.
  • Il 'Problema della Norvegia' è un famoso bug di programmazione in cui il codice paese 'NO' in un file YAML veniva interpretato come il booleano 'false'.
  • Ogni file JSON valido al mondo è anche contemporaneamente un file YAML valido al 100%.

Domande tecniche frequenti

A cosa serve YAML?

YAML è il linguaggio di configurazione principale per il cloud computing, il deployment di cluster Kubernetes, i file Docker Compose, i workflow di GitHub Actions e le impostazioni software.

Posso usare i tabulatori nei file YAML?

No. La specifica ufficiale di YAML vieta rigorosamente l'uso di caratteri di tabulazione per l'indentazione; è necessario utilizzare sempre gli spazi (tipicamente 2 spazi per livello).

Come posso convertire YAML in JSON?

Puoi convertire i file YAML in JSON pulito e convalidato con un solo clic utilizzando File2File.app direttamente nel tuo browser web in completa privacy.