Che cos'è YAML?
Esplora IBM watsonx Code Assistant for Red Hat Ansible Lightspeed Prenota una demo live
Colleghi che guardano il codice sul monitor di un computer

Pubblicazione: 11 dicembre 2023
Collaboratori: Tasmiha khan, Michael goodwin

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.

Richiedi una demo

Ora è il momento di far salire di livello la tua automazione con la potenza dell'AI generativa. Programma una demo personalizzata di 30 minuti con uno dei nostri esperti per vedere IBM watsonx Code Assistant for Red Hat Ansible Lightspeed in azione.

Contenuti correlati

Iscriviti alla newsletter 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.

Per esempio:

frutta:
    - mela
    - arancia
    - pera

Le sequenze possono essere rappresentate anche in una 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.

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 virtual machines, 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.4  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 watsonx Code Assistant for Red Hat Ansible Lightspeed

IBM watsonx Code Assistant for Red Hat Ansible Lightspeed demistifica il processo di creazione dei playbook Ansible tramite suggerimenti di contenuti basati sull'AI generativa. Ideato per accelerare l'automazione IT, questo prodotto è progettato per fornire suggerimenti sui contenuti di automazione per una migliore esperienza Ansible.

Esplora watsonx Code Assistant for Red Hat Ansible Lightspeed Prenota una demo live

IBM watsonx Code Assistant

IBM watsonx Code Assistant sfrutta l'AI generativa per accelerare lo sviluppo, mantenendo allo stesso tempo i principi di fiducia, sicurezza e conformità. Gli sviluppatori e gli operatori IT possono accelerare le iniziative di modernizzazione delle applicazioni e generare automazione per scalare rapidamente gli ambienti IT.

Esplora IBM watsonx Code Assistant

Fasi successive

Te la senti di far progredire la tua automazione grazie all'AI generativa? Scopri cosa può fare watsonx Code Assistant for Red Hat Ansible Lightspeed programmando una demo live o parlando con uno dei nostri esperti.

Esplora watsonx Code Assistant for Red Hat Ansible Lightspeed Prenota una demo live
Note a piè di pagina

1 "Come rappresentare gli array in YAML" (link esterno a ibm.com)”, Tarun telang, Educative, Inc., 2023

2 "What's the difference between YAML and JSON" (link esterno a ibm.com), Amazon Web Services, 2023

"Che cos'è YAML" (link esterno a ibm.com), Redhat.com, 3 marzo 2023

4 "Docker Compose overview" (link esterno a ibm.com), Docker.com, 2023 

5 "Python YAML | Guida alla gestione dei file YAML" (link esterno a ibm.com), Gabriel Ramuglia, 11 settembre 2023