Sintassi
Regole di Base
IndentationSolo spazi (nessun tab), profondità consistente
#Commento (fino a fine riga)
---Marcatore di inizio documento
...Marcatore di fine documento
Case sensitiveChiavi e valori distinguono le maiuscole
Esempio Minimale
--- name: Alice age: 30 active: true
Scalari
Tipi Scalari
helloStringa (senza virgolette)
"hello"Stringa (doppi apici, permette escape)
'hello'Stringa (apice singolo, letterale)
42 / 3.14Numero (intero / virgola mobile)
true / falseBooleano
null / ~Valore null
2026-03-26Data (ISO 8601)
Regole di Virgolettatura
plain: nessuna virgoletta necessaria special: "il colon: e il cancelletto # richiedono virgolette" escape: "line\nnewline" literal: 'nessun escape \n qui'
Sequenze
Sequenza a Blocchi
fruits: - apple - banana - cherry
Sequenza Flow (Inline)
colors: [red, green, blue] matrix: [[1, 2], [3, 4]]
Sequenza di Oggetti
users: - name: Alice role: admin - name: Bob role: user
Mapping
Mapping a Blocchi
server: host: localhost port: 8080 debug: false
Mapping Flow (Inline)
point: {x: 10, y: 20}
Chiavi Complesse
? [first, second] : "valore chiave composta"
Ancore e Alias
Definizione e Riutilizzo
defaults: &defaults timeout: 30 retries: 3 production: <<: *defaults timeout: 60
Riferimento
&nameDefinisce un'ancora
*nameRiferimento (alias) a un'ancora
<<Chiave merge — fonde il mapping nel corrente
Stringhe Multi-riga
Scalari a Blocchi
| (letterale)Preserva i newline esattamente
> (ripiegato)Ripiega i newline in spazi
|+ (conserva)Letterale, conserva newline finali
|- (elimina)Letterale, elimina newline finali
>- (piega+elimina)Ripiegato, elimina newline finali
Blocco Letterale
script: | echo "line one" echo "line two"
Blocco Ripiegato
description: > Questo lungo testo verrà ripiegato in una singola riga con spazi.
Tag
Tag di Tipo
!!str 42Forza il valore a stringa "42"
!!int "42"Forza il valore a intero 42
!!float 1Forza il valore a float 1.0
!!bool "true"Forza il valore a booleano
!!null ""Forza il valore a null
!!binaryDati binari codificati in base64
Esempio di Tag
port: !!str 8080 enabled: !!bool "yes" version: !!float 3
Pattern Comuni
Docker Compose
services: web: image: nginx:alpine ports: ["80:80"] environment: NODE_ENV: production
GitHub Actions
on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
Suggerimenti
yamllintLinta YAML per sintassi e stile
yqProcessore YAML da riga di comando (come jq)
Avoid NorwayNO è booleano false — metti tra virgolette i codici paese
Avoid !!pythonNon caricare mai YAML non attendibile con loader non sicuri