Vai al paragrafo

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. 

YAML è 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.

Illustration of clock connected to application

Automazione: soluzioni per aziende più efficienti

Connetti team, processi e ambienti. Dedica più tempo all’innovazione.

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.

---
# An employee record
name: Martin D'vloper
job: Developer
skill: Elite
employed: True
foods:
  - Apple
  - Orange
  - Strawberry
  - Mango
languages:
  perl: Elite
  python: Elite
  pascal: Lame
education: |
  4 GCSEs
  3 A-Levels
  BSc in the 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.  

I file YAML

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. 

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

YAML come linguaggio di automazione 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.

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

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.