Corso YAML - Indice

Contesto di versione

Verificato il 21 agosto 2026. Specifica corrente: YAML 1.2.2, 1 ottobre 2021 (nessuna nuova release da allora; la 1.2.2 non contiene cambiamenti normativi rispetto alla 1.2). Esiste una bozza 1.3.0 ferma al 2022 e mai pubblicata su yaml.org. Gli esempi marcati ✅ sono stati eseguiti con PyYAML 6.0.3 (semantica YAML 1.1) e con lo schema core di YAML 1.2: l’output riportato è quello vero.

La cosa da capire subito

YAML sembra facile per dieci minuti e poi ti morde. Il motivo è uno solo:

La specifica dice una cosa, i parser che usi tutti i giorni ne fanno un’altra, e non tutti la stessa. Il file paesi: [IT, FR, NO] in Python ti restituisce ['IT', 'FR', False]. Non è un bug: è YAML 1.1, che PyYAML implementa ancora nel 2026.

Questo corso è costruito attorno a questa frattura, perché è la causa della quasi totalità dei problemi reali con YAML.

I moduli

#ModuloCosa impari
101 - YAML e la frattura tra 1.1 e 1.2Perché lo stesso file dà risultati diversi
202 - Struttura - documenti, mapping, indentazioneLe regole esatte, tab compresi
303 - Scalari, quoting e blocchi multirigaQuando virgolettare, e | contro >
404 - Tipi, risoluzione implicita e trappoleLa tabella che ti salva: Norway, versioni, date
505 - Anchor, alias, merge key e chiaviRiuso, e i suoi limiti
606 - YAML nella praticaActions, Home Assistant, Compose, Kubernetes, frontmatter
707 - Strumenti, sicurezza, debug e referenceyamllint, schemi, RCE, come si legge un errore

Percorso consigliato

I moduli 3 e 4 sono quelli che eliminano la maggior parte dei tuoi bug futuri. Il 6 è quello che userai come reference quando scrivi automazioni o workflow. Il 2 sembra banale e non lo è: l’indentazione di YAML ha regole che quasi nessuno conosce con precisione.

Le regole d’oro, in anticipo

Se leggessi solo questa pagina, porta a casa queste cinque:

  1. Virgoletta ogni valore ambiguo: NO, on, yes, versioni ('1.10'), codici con zeri iniziali ('01234'), orari ('12:30'), colori ('#FF0000'), tutto ciò che è un identificatore travestito da numero.
  2. Due spazi di indentazione, mai tab. I tab nell’indentazione sono vietati dalla specifica, non è una questione di stile.
  3. | per gli script, > quasi mai. > trasforma gli a capo in spazi e ti rompe i comandi shell.
  4. Un linter in CI e uno schema nell’editor valgono più di tutta la conoscenza fine del formato.
  5. yaml.safe_load(), sempre. Non yaml.load().

Le fonti

  • Specifica 1.2.2: leggibile, sorprendentemente. I capitoli utili sono il 2 (esempi), il 7 (scalari), l’8 (blocchi) e il 10 (tipi).
  • yaml.org/type/: i tipi di YAML 1.1, cioè quello che i parser fanno davvero: bool.html e timestamp.html spiegano metà delle sorprese.
  • yamllint: il linter di riferimento.