alltools.one
YAML
2025-07-06
8 min
alltools.one Team
YAMLSyntaxConfigurationDevOps

Tutorial Sintassi YAML: Un'Introduzione Pratica

YAML (YAML Ain't Markup Language) è un formato di serializzazione dati leggibile dall'uomo ampiamente utilizzato in file di configurazione, pipeline CI/CD e infrastructure-as-code. Se lavori con Docker Compose, Kubernetes, GitHub Actions o Ansible, stai già usando YAML quotidianamente. Questo tutorial copre tutto ciò che ti serve per scrivere YAML con sicurezza.

Perché YAML?

Il vantaggio principale di YAML è la leggibilità. Confronta gli stessi dati in JSON e YAML:

JSON:

{
  "server": {
    "host": "localhost",
    "port": 8080,
    "debug": true,
    "allowed_origins": ["http://localhost:3000", "https://example.com"]
  }
}

YAML:

server:
  host: localhost
  port: 8080
  debug: true
  allowed_origins:
    - http://localhost:3000
    - https://example.com

YAML ottiene la stessa struttura con meno punteggiatura. Niente parentesi graffe, niente parentesi quadre per i casi semplici, nessuna quotatura obbligatoria. Questo rende i file di configurazione più facili da leggere e modificare a mano.

Tipi di Dati di Base

Scalari

YAML inferisce automaticamente i tipi dai valori:

string: hello world          # Stringa (nessuna quota necessaria)
quoted: "hello world"        # Stringa esplicita
integer: 42                  # Intero
float: 3.14                  # Float
boolean: true                # Booleano (true/false, yes/no, on/off)
null_value: null             # Null (anche ~ o vuoto)
date: 2025-01-15             # Data (ISO 8601)

Insidia comune: Valori come yes, no, on, off sono interpretati come booleani. Se intendi la stringa "yes", quotala: "yes".

Stringhe e Quotatura

Le stringhe raramente necessitano di quotatura, ma alcuni casi la richiedono:

plain: This is a plain string
single: 'Preserves \n as literal backslash-n'
double: "Interprets \n as newline"
colon: "value: with colon needs quotes"
hash: "value # with hash needs quotes"

Stringhe Multilinea

YAML ha due stili multilinea:

Blocco letterale (|) — preserva le interruzioni di riga:

description: |
  This is line one.
  This is line two.
  
  This is line four (after blank line).

Blocco ripiegato (>) — unisce le righe con spazi:

description: >
  This is a long paragraph
  that will be folded into
  a single line.

Aggiungi - per rimuovere i newline finali (|-, >-) o + per mantenerli (|+, >+).

Collezioni

Liste (Sequenze)

# Block style
fruits:
  - apple
  - banana
  - cherry

# Flow style (inline)
fruits: [apple, banana, cherry]

Mappe (Mapping)

# Block style
person:
  name: Alice
  age: 30
  city: London

# Flow style
person: {name: Alice, age: 30, city: London}

Strutture Annidate

departments:
  - name: Engineering
    lead: Alice
    members:
      - Bob
      - Charlie
  - name: Design
    lead: Diana
    members:
      - Eve

Anchor e Alias

Gli anchor (&) e alias (*) permettono di riutilizzare i valori:

defaults: &defaults
  adapter: postgres
  host: localhost
  port: 5432

development:
  database: dev_db
  <<: *defaults

production:
  database: prod_db
  <<: *defaults
  host: db.example.com  # Sovrascrive il valore predefinito

La merge key << incorpora tutte le proprietà dall'anchor. Le proprietà definite dopo il merge sovrascrivono i valori ancorati. Leggi di più sui pattern avanzati degli anchor nella nostra guida ad anchor e alias YAML.

Documenti Multipli

Un singolo file YAML può contenere più documenti separati da ---:

---
# Documento 1: Config
apiVersion: v1
kind: ConfigMap
---
# Documento 2: Service
apiVersion: v1
kind: Service

Questo è comunemente usato nei manifest Kubernetes.

Insidie Comuni

1. Errori di Indentazione

YAML usa spazi, mai tab. L'indentazione incoerente è l'errore più comune:

# SBAGLIATO - indentazione mista
server:
  host: localhost
    port: 8080  # Errore: indentazione inattesa

# CORRETTO
server:
  host: localhost
  port: 8080

Usa il nostro Formattatore YAML per correggere automaticamente i problemi di indentazione.

2. Il Problema della Norvegia

I codici paese come NO (Norvegia) sono interpretati come booleano false:

# SBAGLIATO
countries:
  - NO  # Interpretato come false!
  - SE
  - DK

# CORRETTO
countries:
  - "NO"
  - SE
  - DK

3. Caratteri Speciali Non Quotati

Due punti, hash e parentesi nei valori necessitano di quotatura:

# SBAGLIATO
message: Error: file not found
url: http://example.com  # Potrebbe rompersi

# CORRETTO
message: "Error: file not found"
url: "http://example.com"

4. Insidia dei Numeri di Versione

I numeri di versione come 1.0 sono analizzati come float:

# SBAGLIATO
version: 1.0  # Diventa 1 (float)

# CORRETTO
version: "1.0"  # Stringa

Validazione del YAML

Valida sempre il tuo YAML prima del deploy. Gli errori di sintassi in YAML possono causare fallimenti criptici nelle applicazioni. Il nostro Validatore YAML controlla la sintassi istantaneamente, evidenziando la riga e la colonna esatta di qualsiasi errore.

Per un approfondimento sulle differenze tra YAML e JSON, vedi il nostro confronto YAML vs JSON.

FAQ

Quanti spazi devo usare per l'indentazione YAML?

Due spazi è la convenzione più comune, usata da Kubernetes, Docker Compose, GitHub Actions e la maggior parte degli strumenti DevOps. Alcuni progetti usano quattro spazi. La regola chiave è la coerenza all'interno di un file — non mescolare mai i livelli di indentazione.

YAML può includere commenti?

Sì, YAML supporta commenti su singola riga con #. Non esiste una sintassi per commenti multi-riga. I commenti vengono rimossi durante il parsing e non sono disponibili nella struttura dati caricata.

Risorse Correlate

Published on 2025-07-06
YAML Syntax Tutorial: A Practical Introduction | alltools.one