Jump to section

Cos'è YAML?

Copia URL

YAML è un linguaggio leggibile in chiaro 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. 

YAML è un linguaggio di programmazione ampiamente diffuso poiché progettato per essere di facile lettura e comprensione. Inoltre, si può combinare con altri linguaggi di programmazione. La flessibilità e la accessibilità di YAML sono i motivi per cui Ansible® utilizza questo linguaggio per creare processi di automazione attraverso Ansible Playbook.

I file YAML presentano un'estensione .yml o .yaml e rispettano regole di sintassi specifiche. 

YAML unisce funzionalità tratte da Perl, C, XML, HTML e altri linguaggi di programmazione. Inoltre, è un sovrainsieme di JSON, pertanto i file JSON sono validi in YAML.

Non si usano simboli di formattazione classici, come parentesi graffe o quadre, tag di chiusura o virgolette e i file YAML sono più semplici da leggere poiché si avvalgono del rientro in stile Python per determinare la struttura e indicare la nidificazione. Per salvaguardare la portabilità tra i sistemi, i caratteri di tabulazione non sono consentiti per definizione e al loro posto si utilizzano gli spazi bianchi, ossia dei caratteri di spaziatura letterali. 

I commenti sono indicati con il simbolo del cancelletto (#). È sempre consigliabile utilizzare i commenti, in quanto descrivono lo scopo del codice. YAML non supporta i commenti multiriga, pertanto ogni riga deve presentare il carattere cancelletto come suffisso.

Una domanda comune tra le persone che si approcciano al linguaggio YAML riguarda il significato dei tre trattini. I tre trattini (---) stanno a indicare l'inizio di un documento, mentre la fine viene contrassegnata con tre punti (...).  

Questo è un esempio molto elementare di file YAML:

 #Commento: questa è una lista della spesa realizzata in linguaggio YAML #Tenere presente che il carattere - rappresenta la lista --- alimenti: - verdure: pomodori #primo elemento della lista - frutta: #secondo elemento della lista agrumi: arance tropicali: banane guscio: arachidi dolci: uvetta 

La struttura di un file YAML è costituita da una mappatura o da una lista e segue una gerarchia basata sul rientro e sulla modalità di definizione dei valori chiave. Le mappature consentono di associare coppie chiave-valore. 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.

Nell'esempio riportato in precedenza "verdure" e "frutta" sono elementi appartenenti alla lista denominata "alimenti".

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. A tal fine, è possibile utilizzare un linter, ossia un'applicazione creata appositamente per esaminare la sintassi dei file, e il comando yamllint per verificare la validità del file YAML prima di passarlo a un'applicazione.

Di seguito è riportato un esempio di file YAML per un dossier dello studente, che illustra le regole di sintassi:

 #Commento: dossier dello studente #Descrive alcune caratteristiche e preferenze --- nome: Martin D'vloper #valore-chiave età: 26 hobby: - dipingere #primo elemento della lista - suonare_strumenti #secondo elemento della lista - cucinare #terzo elemento della lista linguaggi_programmazione: java: Intermedio python: Avanzato javascript: Principiante cibi_preferiti - verdure: pomodori - frutta: agrumi: arance tropicali: banane guscio: arachidi dolci: uvetta 

Traducendo questo file in Python, utilizzando la libreria PyYAML, si ottiene la seguente struttura dei dati:

 [ { "nome": "Martin D'vloper", "età": 26, "hobby": ["dipingere", "suonare_strumenti", "cucinare"], "linguaggi_programmazione": { "java": "Intermedio", "python": "Avanzato", "javascript": "Principiante", }, "cibi_preferiti": [ {"verdure": "pomodori"}, { "frutta": { "agrumi": "arance", "tropicali": "banane", "guscio": "arachidi", "dolci": "uvetta", } }, ], } ]

Uno degli impieghi più comuni di YAML è la creazione dei file di configurazione. È consigliabile preferire YAML a JSON per la scrittura 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 della sorgente, come Github, ed è quindi possibile monitorare e controllare le modifiche.

Qual è la differenza fra Ansible e Red Hat Ansible Automation Platform?

YAML in Ansible

Gli Ansible Playbook sono strumenti che consentono di orchestrare i processi IT. Un playbook è un file YAML contenente uno 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 e liste. 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).

Con l'utilizzo dei modelli YAML, gli utenti Ansible possono programmare l'esecuzione automatica delle attività ripetitive, anche senza conoscere alcun linguaggio di programmazione avanzato. Gli sviluppatori possono inoltre utilizzare il comando ansible-lint (un linter YAML per Ansible Playbook), al fine di identificare errori ed evitare che si verifichino durante le fasi critiche di un'operazione.

Il rilascio di Ansible Lightspeed with IBM Watson Code Assistant, un servizio di intelligenza artificiale generativa, permette agli sviluppatori di creare contenuti Ansible per l’automazione in modo più efficiente. Inserendo una richiesta di attività in inglese, gli utenti potranno generare codice YAML pulito e coerente per l’automazione di attività da utilizzare per creare Ansible Playbook.

YAML per Kubernetes

Il funzionamento di Kubernetes si basa sullo stato definito e sullo 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 si 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. Include tutti gli strumenti necessari per distribuire 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.

La sottoscrizione Red Hat offre contenuti certificati, un solido ecosistema di partner, l'accesso ai servizi di gestione in hosting e il supporto tecnico per il ciclo di vita che agevolano la realizzazione, la gestione e la scalabilità dell'automazione in tutta l'organizzazione. Inoltre, potrai avvalerti delle conoscenze degli esperti acquisite grazie ai successi ottenuti presso migliaia di clienti.

Red Hat OpenShift è la versione di Kubernetes per l'ambiente enterprise. Include tutte le tecnologie aggiuntive necessarie 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.

Quanto tempo si può risparmiare grazie all'automazione?

Rispondi ad alcune brevi domande per calcolare il tempo che potresti risparmiare utilizzando Ansible Automation Platform per l'automazione dell'IT della tua azienda.

Continua a leggere

Articolo

I concetti base di Ansible

Ansible consente di automatizzare i processi IT, come il provisioning e la gestione della configurazione. Questo articolo fornisce un'introduzione ai concetti base di Ansible.

Articolo

Cos'è la gestione dei processi aziendali?

La gestione dei processi di business (BPM, business process management) consiste nella creazione di modelli di business, nell'analisi e nell'ottimizzazione dei processi aziendali end to end per realizzare i tuoi obiettivi aziendali strategici.

Articolo

Perché scegliere Red Hat per l'automazione

Red Hat Ansible Automation Platform include tutti gli strumenti necessari per condividere le competenze di automazione tra i team e adottare l'automazione a livello aziendale.

Scopri di più sull'automazione

Prodotti

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.

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

Risorse

Ebook

L'azienda automatizzata connette persone e processi

Ebook

Automazione dei flussi di lavoro dell'infrastruttura

Continua a leggere

Formazione

Corso di formazione gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Corso di formazione gratuito

Red Hat Ansible Automation for SAP