Account Accedi
Jump to section

Cos'è YAML?

Copia URL

YAML è un linguaggio per la serializzazione di dati che viene spesso impiegato per la scrittura dei file di configurazione. Per alcuni, l'acronimo YAML sta per "yet another markup language", ovvero "un ulteriore linguaggio di markup", mentre per altri indica "YAML ain’t markup language", ovvero "YAML non è un linguaggio di markup" (un acronimo ricorsivo) a voler enfatizzare che YAML è progettato per i dati e non per i documenti. 

YALM è un linguaggio di programmazione ampiamente diffuso poiché leggibile in chiaro e di facile comprensione. Inoltre, si può combinare con altri linguaggi di programmazione. Per via della sua grande flessibilità e accessibilità, viene usato dallo strumento di automazione Ansible per creare processi di automazione nella forma degli Ansible Playbook.

YAML unisce funzionalità tratte da Perl, C, XML, HTML e altri linguaggi di programmazione. È un sovrainsieme di JSON, e questo significa che i file JSON sono validi in YAML.

YAML utilizza il rientro in stile Python per indicare la nidificazione. I caratteri di tabulazione non sono consentiti e si utilizzano gli spazi bianchi al loro posto. Non si usano simboli di formattazione classici come parentesi graffe o quadre, tag di chiusura o virgolette e le estensioni dei file YAML sono .yml o .yaml. 

Un file YAML ha la struttura di una mappatura o una lista.

Le mappature consentono di associare coppie chiave-valore, in cui ogni chiave deve essere univoca e l'ordine non ha importanza. Non dissimile da quanto avviene con un dizionario Python o con l'assegnazione di variabile in uno script Bash.

È necessario risolvere una mappatura in YAML prima di poterla chiudere e di poterne creare una nuova. È possibile creare una nuova mappatura aumentando il livello di rientro o risolvendo la mappatura precedente e avviandone un'altra adiacente. 

Una lista invece prevede che i valori seguano un determinato ordine e non ci sono vincoli al numero di elementi che si possono aggiungere. Le sequenze cominciano con un trattino (-) e uno spazio, mentre il rientro serve a separare un livello da quello superiore. Il funzionamento è lo stesso della sequenza in una lista Python o della matrice in Bash e Perl. È possibile incorporare una lista in una mappatura. 

YAML contiene anche gli scalari, cioè dati arbitrari codificati in Unicode che si possono utilizzare come valori, ad esempio stringhe, numeri interi, date, numeri o variabili booleane.

Quando si crea un file YAML, bisogna assicurarsi di rispettare le regole di sintassi appena elencate e controllare che il file sia valido. Per verificare di aver creato un file YAML valido prima di consegnarlo a un'applicazione, si può utilizzare un linter, cioè un'applicazione creata appositamente per esaminare la sintassi dei file, e il comando yamllint.

Di seguito un esempio di un file YAML molto semplice per la registrazione dei dipendenti con cui è possibile vedere in pratica le caratteristiche della sintassi.

 
---
  # Registrazione di un dipendente
  nome: Martin D'vloper 
  ruolo: Sviluppatore 
  competenza: Eccellente 
  assunto: Vero 
  alimenti: 
  - Mela 
  - Arancia 
  - Fragola 
  - Mango 
  linguaggi: 
    perl: Eccellente 
    python: Eccellente 
    pascal: Scarso 
  istruzione: | 
  4 GCSEs 
  3 A-Levels 
  BSc in Internet of Things  

Uno degli impieghi più comuni di YAML è la scrittura dei file di configurazione. È consigliabile preferire YAML a JSON per la creazione dei file di configurazione perché, anche se nella maggior parte dei casi i due formati sono interscambiabili, YAML è più leggibile e intuitivo.  

Oltre all'impiego che ne fa Ansible, YAML è utilizzato anche per i deployment e le risorse Kubernetes. 

Da non sottovalutare anche il fatto che i file YAML si possono aggiungere al controllo del codice sorgente, come Github, ed è quindi possibile monitorare e controllare le modifiche. 

YAML in Ansible

Gli Ansible Playbook sono strumenti che consentono di orchestrare i processi IT. Un playbook è un file YAML contenente 1 o più play, che permette di definire la condizione target di un sistema. 

Ciascun play può eseguire una o più attività e ogni attività richiama un modulo Ansible. I moduli consentono di eseguire le attività di automazione in Ansible. I moduli Ansible possono essere scritti in qualunque linguaggio che restituisca file JSON, come Ruby, Python o bash.

Un Ansible Playbook è composto da mappature ed elenchi. Per creare un playbook, avvia un elenco YAML che denomina il play, quindi elenca le attività in sequenza. Ricorda però che il rientro non indica l'eredità logica. Immagina ogni riga come un tipo di dato YAML (una lista o una mappatura).

Poiché Ansible utilizza modelli YAML leggibili in chiaro, i suoi utenti possono programmare l'esecuzione automatica delle attività ripetitive anche senza conoscere alcun linguaggio di programmazione avanzato.

YAML per Kubernetes

Il funzionamento di Kubernetes si basa sullo stato definito e lo stato effettivo. Gli oggetti Kubernetes rappresentano lo stato di un cluster e indicano a Kubernetes lo stato desiderato del carico di lavoro. Gli utenti possono impiegare i file YAML per creare le risorse di Kubernetes, come pod, oggetti e deployment. 

Durante la fase di creazione di un oggetto Kubernetes, è necessario aggiungere le specifiche sulla condizione target di quell'oggetto. Per creare l'oggetto su può usare l'API Kubernetes. La richiesta all'API include le specifiche dell'oggetto in formato JSON, anche se molto spesso gli utenti preferiscono fornire le informazioni richieste a kubectl sotto forma di file YAML. Kubectl si occuperà di convertire il file in YAML al posto dell'utente quando effettuerà la richiesta API.

Dopo aver creato e definito un oggetto, Kubernetes si assicura che tale oggetto continui ad esistere. 

Gli sviluppatori e gli amministratori di sistema specificano lo stato definito utilizzando il file in formato YAML o JSON inviato all'API Kubernetes. Kubernetes utilizza un controller per analizzare la differenza fra il nuovo stato definito e lo stato effettivo nel cluster.

Red Hat Ansible Automation Platform utilizza il linguaggio di automazione YAML leggibile in chiaro che consente agli utenti di un'organizzazione di condividere, controllare e gestire il contenuto dell'automazione.

Ansible Automation Platform include tutti gli strumenti necessari per implementare l'automazione nell'intera azienda, inclusi playbook e analisi. Consente inoltre agli utenti di centralizzare e controllare l'infrastruttura IT tramite un dashboard grafico, il controllo degli accessi basato sui ruoli e molte altre funzionalità volte a ridurre la complessità operativa.

Red Hat OpenShift è la versione di Kubernetes per l'ambiente enterprise. Include tutti i componenti aggiuntivi necessari per adattare Kubernetes a questo tipo di ambiente, tra cui registro, reti, telemetria, sicurezza, automazione e servizi.

Red Hat OpenShift permette agli sviluppatori di creare nuove app containerizzate, ospitarle e distribuirle nel cloud con i livelli di scalabilità, controllo e orchestrazione necessari per trasformare le idee migliori in nuove opportunità di business, in modo semplice e rapido.

Scopri di più sull'automazione

Prodotti

Red Hat Consulting

Collabora con il nostro team di consulenti strategici in grado di analizzare l'azienda nel suo insieme e valutare le sfide da affrontare, per aiutarti a superarle con soluzioni complete e convenienti.

Red Hat Ansible Automation Platform

Una piattaforma per implementare l'automazione in azienda, in qualsiasi fase del tuo percorso di trasformazione

Red Hat Process Automation

Una piattaforma per lo sviluppo delle applicazioni cloud native destinate all'automazione dei processi e delle decisioni aziendali.

Risorse

Formazione

Corso di formazione gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Corso di formazione gratuito

Red Hat Ansible Automation for SAP

Illustration - mail

Ricevi contenuti simili

Iscriviti a Red Hat Shares, la nostra newsletter gratuita.