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
| # | Modulo | Cosa impari |
|---|---|---|
| 1 | 01 - YAML e la frattura tra 1.1 e 1.2 | Perché lo stesso file dà risultati diversi |
| 2 | 02 - Struttura - documenti, mapping, indentazione | Le regole esatte, tab compresi |
| 3 | 03 - Scalari, quoting e blocchi multiriga | Quando virgolettare, e | contro > |
| 4 | 04 - Tipi, risoluzione implicita e trappole | La tabella che ti salva: Norway, versioni, date |
| 5 | 05 - Anchor, alias, merge key e chiavi | Riuso, e i suoi limiti |
| 6 | 06 - YAML nella pratica | Actions, Home Assistant, Compose, Kubernetes, frontmatter |
| 7 | 07 - Strumenti, sicurezza, debug e reference | yamllint, 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:
- 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. - Due spazi di indentazione, mai tab. I tab nell’indentazione sono vietati dalla specifica, non è una questione di stile.
|per gli script,>quasi mai.>trasforma gli a capo in spazi e ti rompe i comandi shell.- Un linter in CI e uno schema nell’editor valgono più di tutta la conoscenza fine del formato.
yaml.safe_load(), sempre. Nonyaml.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.htmletimestamp.htmlspiegano metà delle sorprese. - yamllint: il linter di riferimento.