Che cos'è YAML?

11 dicembre 2023

Autori

Tasmiha Khan

Writer

Michael Goodwin

Editorial lead, Automation & ITOps

Che cos'è YAML?

YAML è un linguaggio di serializzazione dei dati versatile e leggibile dall'uomo comunemente utilizzato per scrivere file di configurazione.

Fornisce un formato standardizzato per rappresentare i dati strutturati in un modo facilmente comprensibile per l'uomo e interpretabile dalle macchine. "YAML" è un acronimo che sta per "YAML Ain't Markup Language" o "Yet Another Markup Language". Il primo ha lo scopo di sottolineare che il linguaggio è destinato ai dati piuttosto che ai documenti.

Fondamentalmente, YAML è progettato pensando alla semplicità e alla leggibilità. Utilizza una sintassi pulita e minimalista, basata su indentazione, coppie chiave-valore e convenzioni intuitive. Questo approccio consente agli sviluppatori e agli utenti di esprimere strutture di dati complesse in un formato simile al linguaggio naturale e facile da comprendere a colpo d'occhio.

L'enfasi sulla leggibilità umana rende YAML particolarmente adatto per varie applicazioni, inclusi file di configurazione (config) e scambio di dati tra diversi sistemi. La struttura semplice e intuitiva ne migliora l'usabilità in diversi domini, consentendo agli utenti di definire e organizzare i dati in modo chiaro e comprensibile. YAML supporta i caratteri Unicode, consentendo la rappresentazione di un'ampia gamma di caratteri e simboli di diverse lingue e set di caratteri. Un formato YAML valido genera specifiche senza errori di sintassi.

L'adattabilità di YAML lo rende una scelta versatile in un'ampia gamma di applicazioni. Dalla gestione della configurazione allo scambio di dati e all'automazione, l'usabilità di YAML si estende su vari domini, offrendo un mezzo accessibile e strutturato per rappresentare e gestire i dati.

Le ultime notizie nel campo della tecnologia, supportate dalle analisi degli esperti

Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e altro con la newsletter Think. Leggi l'Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

Sintassi e attributi SAML

Esistono vari attributi ed elementi chiave all'interno della sintassi YAML. È fondamentale comprendere la struttura, i tipi di dati e le convenzioni utilizzate nei file YAML per garantire un'efficiente rappresentazione e leggibilità dei dati.

Mappa (dizionario)

In YAML, i dizionari sono rappresentati come mappature. Si tratta di una raccolta di coppie chiave-valore in cui ogni chiave è associata a un valore. Questa struttura dati ricorda il concetto di dizionari o mappe presenti in vari linguaggi di programmazione.

Indentazione

La sintassi YAML si basa in larga misura sul rientro e sul numero di spazi per rappresentare la struttura dei dati. Gli spazi vuoti (non i caratteri di tabulazione, che non sono consentiti in YAML) vengono utilizzati in YAML per indicare la gerarchia e l'annidamento. Poiché YAML si basa sul rientro per la struttura, la coerenza in tutto il documento YAML è importante.

Le nuove righe rappresentano le interruzioni di riga o la fine di una riga all'interno del formato YAML utilizzato per separare elementi diversi.

Virgolette

Per la maggior parte degli scalari in YAML, le virgolette non sono necessarie. Tuttavia, le virgolette possono essere necessarie per evitare confusione in alcuni scenari, ad esempio intorno a una stringa di testo che contiene caratteri speciali e potrebbe essere confusa con la sintassi YAML. Oppure, ad esempio, se hai una stringa composta solo da "true" che non vuoi convertire in un valore booleano. In casi come questi è possibile utilizzare virgolette singole o doppie, a seconda dei dati e di ciò che deve essere espresso.

Coppie chiave-valore

YAML utilizza un semplice formato di coppia chiave-valore separato da due punti per la rappresentazione delle associazioni di dati.

Per esempio:

professione: insegnante

Sequenze (array)

Le sequenze (array o elenchi in altri linguaggi) consentono di definire un elenco di elementi in YAML. Il rientro separa una sequenza dall'elemento padre e ogni elemento dell'elenco inizia con un trattino (-) seguito da uno spazio. Tutti gli elementi della sequenza devono avere lo stesso rientro.

Ad esempio:

frutta:
 - mela
 - arancia
 - pera


Le sequenze possono essere rappresentate anche come sequenza di flusso utilizzando parentesi e virgole.1

frutta: [mela, arancia, pera]

Tipi di dati

YAML supporta vari tipi di dati, come stringhe, numeri interi, float, booleani e valori null. Questi tipi di dati offrono flessibilità nella rappresentazione di diversi tipi di informazioni.

Commenti

YAML supporta i commenti contrassegnati dal simbolo #. I commenti aiutano ad aggiungere spiegazioni, note o contesto all'interno dei file YAML.

Stringhe multilinea

YAML supporta stringhe multilinea, permettendo al testo di estendersi su più righe senza richiedere interruzioni di riga esplicite. Le stringhe multilinea sono utili per includere blocchi di testo nei documenti YAML.

File YAML

I file YAML usano in genere estensioni come .yaml o .yml. Le convenzioni per la denominazione e la strutturazione dei file YAML garantiscono la coerenza e la corretta interpretazione dei dati. I file YAML possono essere letti anche in Perl, Ruby e Python.

Sviluppo di applicazioni

Sali a bordo: sviluppo di applicazioni Enterprise nel cloud

In questo video il Dr. Peter Haumer illustra l'aspetto del moderno sviluppo di applicazioni aziendali nell'hybrid cloud, mostrando diversi componenti e pratiche, tra cui IBM Z Open Editor, IBM Wazi e Zowe. 

YAML, JSON e XML

YAML e JSON hanno in comune la rappresentazione dei dati, ma YAML si distingue per la leggibilità, l'espressività e il supporto di strutture di dati complesse. YAML è un superset di JSON, cioè contiene tutte le caratteristiche di JSON oltre a funzioni e comandi ampliati.

JSON (JavaScript Object Notation) utilizza una sintassi più esplicita con parentesi graffe {}, parentesi quadre [] e virgole. Sebbene concisa e ampiamente utilizzata, la sintassi di JSON potrebbe diventare meno leggibile, soprattutto in set di dati più grandi. Il supporto di JSON per le strutture di dati è relativamente limitato, principalmente con array, oggetti e valori scalari.

JSON è spesso preferito per la sua compatibilità incrociata per lo scambio di dati in applicazioni web e API, mentre YAML è più comunemente utilizzato in scenari in cui sono richieste leggibilità umana e strutture dati più complesse, come file di configurazione e alcuni tipi di documentazione e scambio di dati.2

Rispetto a XML, YAML offre un'alternativa più concisa e a misura d'uomo, enfatizzando la semplicità e la facilità di comprensione nella rappresentazione e nello scambio dei dati. YAML e XML presentano differenze fondamentali nella sintassi e nello scopo.

XML è altamente strutturato e si basa su tag di apertura e chiusura espliciti, il che lo rende leggermente confuso. Al contrario, YAML utilizza una struttura simile a un linguaggio più semplice e naturale, concentrandosi sulla leggibilità attraverso indentazione e coppie chiave-valore senza tag di chiusura espliciti.

Casi d'uso di YAML

YAML può essere utilizzato con tutti i linguaggi di programmazione e viene spesso utilizzato per i file di configurazione, nonché per lo scambio di dati e la documentazione. Il suo formato leggibile dall'uomo migliora la chiarezza della documentazione.

YAML e DevOps

YAML svolge un ruolo fondamentale in DevOps ed è fondamentale nell'automazione, nell'orchestrazione e nella gestione della configurazione. All'interno delle pratiche DevOps, i file YAML fungono da blueprint per definire sequenze di azioni e configurazioni in un formato facilmente comprensibile. Questi file vengono utilizzati per delineare con precisione le fasi e le procedure necessarie per l'automazione, consentendo una rappresentazione chiara e concisa di workflow complessi.

Infrastructure as code (IaC, Infrastructure as Code)

YAML viene utilizzato per definire l'infrastruttura come codice, ovvero l'uso del codice, anziché di processi manuali, per definire e gestire l'infrastruttura IT. L'IaC consente una configurazione dell'infrastruttura IT più efficiente e coerente. YAML può essere utilizzato per definire la configurazione desiderata dell'infrastruttura come macchine virtuali, reti e storage e per descrivere il rapporto tra i componenti dell'infrastruttura IT.

Distribuzioni

YAML viene utilizzato per creare file di distribuzione per applicazioni che specificano configurazioni di app, dipendenze, limiti di risorse e altre informazioni importanti per una distribuzione e prestazioni efficienti delle applicazioni. I file YAML aiutano a ridurre gli errori di distribuzione e ad aumentare la velocità di distribuzione delle applicazioni attraverso il controllo delle versioni e l'automazione.

Configurazione della pipeline CI/CD

YAML può svolgere un ruolo importante nelle pipeline di integrazione continua e distribuzione continua (CI/CD), un importante workflow DevOps agile. Analogamente alla configurazione dell'infrastruttura e alle distribuzioni, i file YAML sono utilizzati per definire le fasi e i target della pipeline e, in ultima analisi, per automatizzare il processo CI/CD.

Strumenti YAML e DevOps

Molti strumenti e programmi utilizzati dai team DevOps sfruttano YAML, tra cui:

Ansible

Ansible è un'applicazione software di automazione open source che utilizza file formattati YAML, noti come playbook, per definire attività e procedure di automazione. ​​I modelli SAML consentono agli utenti di programmare l'automazione di attività ripetitive senza la conoscenza di un linguaggio di programmazione avanzato.3

Utilizzando IBM® watsonx Code Assistant for Red Hat Ansible Lightspeed, gli utenti possono scrivere un'attività in inglese standard e ricevere consigli sul codice YAML per le attività di automazione. Questi consigli sul codice vengono utilizzati per creare i playbook Ansible.3

Kubernetes

Kubernetes è una piattaforma open source di orchestrazione di container utilizzata per automatizzare la distribuzione, la scalabilità e la gestione delle applicazioni containerizzate. Kubernetes funziona in base agli "stati", cercando di raggiungere uno stato desiderato da quello attuale sulla base di istruzioni specifiche. I file YAML possono essere utilizzati per creare risorse Kubernetes come pod, oggetti e distribuzioni, nonché per specificare e comunicare lo stato desiderato degli oggetti Kubernetes.

GitHub

GitHub, una piattaforma basata sul web per il controllo delle versioni e la collaborazione nello sviluppo software, incorpora YAML per la definizione dei workflow. Le configurazioni basate su YAML nei repository GitHub consentono la configurazione di workflow automatizzati per l'integrazione e la gestione dei progetti continue.

docker compose

Docker Compose è uno strumento per la definizione e l'esecuzione di applicazioni Docker multi-container.I file YAML vengono utilizzati in Docker Compose per configurare i servizi di un'applicazione.

Condivisione dei dati in più linguaggi

YAML è indipendente dal linguaggio, il che lo rende ideale per la condivisione di dati in più linguaggi. Una volta definito un file YAML, può essere eseguito in altri linguaggi come Python o Ruby.

File di registro

I file di registro sono file di dati di testo generati dal computer che contengono informazioni sulle operazioni e sui modelli all'interno di applicazioni, sistemi, server e altre risorse o dispositivi IT. Sono utilizzati per valutare le prestazioni delle risorse e svolgono un ruolo cruciale nell'osservabilità del sistema. Grazie alla sua semplicità, YAML viene utilizzato per creare file di registro intuitivi e puliti.

Vantaggi di YAML

YAML è diventato un linguaggio di serializzazione dei dati popolare per diversi motivi, tra cui la sua semplicità, compatibilità e utilità nella creazione di file di configurazione.

Semplicità

La sintassi di YAML ricorda le strutture del linguaggio naturale. La semplicità e il design minimalista lo rendono facilmente comprensibile sia per gli sviluppatori che per gli utenti non tecnici, migliorando la comprensione e riducendo gli errori.

Utilizzo per i file di configurazione

YAML è adatto per i file di configurazione grazie al suo formato strutturato e leggibile. Semplifica il processo di definizione delle configurazioni utilizzando l'indentazione e le coppie chiave-valore, rendendolo gestibile e adattabile a varie applicazioni software.

Compatibilità

La natura indipendente dalla piattaforma di YAML garantisce la compatibilità tra diversi sistemi e linguaggi di programmazione, facilitando lo scambio di dati e l'interoperabilità senza interruzioni tra varie piattaforme e ambienti.

Strumenti per l'elaborazione YAML

PyYAML è un'importante libreria Python utilizzata per analizzare e lavorare con i file YAML nelle applicazioni basate su Python. Fornisce metodi per caricare i dati YAML negli oggetti Python. PyYAML consente la conversione di file YAML in strutture pratiche di dati all'interno delle applicazioni Python e viceversa.5

Strumenti come PyYAML e altri analizzatori e validatori YAML, come yamllint e YAML Validator, svolgono un ruolo importante nel preservare l'accuratezza, la validità e l'integrità dei file YAML. La loro funzione principale consiste nella convalida della sintassi YAML, nell'identificazione degli errori e nella garanzia di coerenza all'interno dei documenti YAML.

Soluzioni correlate
IBM Enterprise Application Service for Java

Un servizio single-tenant completamente gestito per lo sviluppo e la distribuzione di applicazioni Java.

Esplora le applicazioni Java
Soluzioni DevOps

Utilizza il software e gli strumenti DevOps per creare, distribuire e gestire app cloud-native su più dispositivi e ambienti.

Esplora le soluzioni DevOps
Enterprise Application Development Services

Lo sviluppo di applicazioni cloud significa programmare una volta, iterare rapidamente e distribuire ovunque.

Servizi per lo sviluppo di applicazioni
Fai il passo successivo

I servizi di consulenza per lo sviluppo delle applicazioni IBM Cloud offrono consulenza esperta e soluzioni innovative per semplificare la tua strategia cloud. Collabora con gli esperti di cloud e sviluppo di IBM per modernizzare, scalare e accelerare le tue applicazioni, ottenendo risultati trasformativi per la tua azienda.

Esplora i servizi per lo sviluppo di applicazioni Inizia a creare gratuitamente con IBM Cloud