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:

#Comment: This is a supermarket list using YAML
#Note that - character represents the list
---
food: 
  - vegetables: tomatoes #first list item
  - fruits: #second list item
      citrics: oranges 
      tropical: bananas
      nuts: peanuts
      sweets: raisins

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 un esempio di un file YAML molto semplice per il dossier di uno studente, con cui è possibile vedere in pratica le caratteristiche della sintassi:

#Comment: Student record
#Describes some characteristics and preferences
---
name: Martin D'vloper #key-value
age: 26
hobbies: 
  - painting #first list item
  - playing_music #second list item
  - cooking #third list item
programming_languages:
  java: Intermediate
  python: Advanced
  javascript: Beginner
favorite_food: 
  - vegetables: tomatoes 
  - fruits: 
      citrics: oranges 
      tropical: bananas
      nuts: peanuts
      sweets: raisins

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

[
    {
        "name": "Martin D'vloper",
        "age": 26,
        "hobbies": ["painting", "playing_music", "cooking"],
        "programming_languages": {
            "java": "Intermediate",
            "python": "Advanced",
            "javascript": "Beginner",
        },
        "favorite_food": [
            {"vegetables": "tomatoes"},
            {
                "fruits": {
                    "citrics": "oranges",
                    "tropical": "bananas",
                    "nuts": "peanuts",
                    "sweets": "raisins",
                }
            },
        ],
    }
]

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.

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 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. 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 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. 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 ti consente di ottenere 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. I clienti possono inoltre avvalersi delle conoscenze e delle competenze degli esperti Red Hat, acquisite attraverso collaborazioni di successo con migliaia di clienti.

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.

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

STORIE DEI CLIENTI DI RED HAT

Scopri come i nostri clienti hanno utilizzato Ansible Automation Platform per velocizzare i processi IT.

Esplora le storie dei clienti

 

Continua a leggere

RISORSE

Risorse per l'apprendimento per Red Hat Ansible Automation Platform

LABORATORIO

Prova Red Hat Ansible Automation Platform in base ai tuoi ritmi accedendo a un laboratorio interattivo

WHITE PAPER

Ottimizza le pipeline CI/CD con Red Hat Ansible Automation Platform

RESOCONTO ANALITICO

IDC: Il valore di Red Hat Ansible Tower

SCHEDA TECNICA

Red Hat Ansible Automation Platform

SCHEDA TECNICA

Red Hat Edge

SINTESI

Missione compiuta: edge computing nello spazio

SINTESI

Red Hat e Nutanix: supporto per le tue applicazioni dati strategiche

PANORAMICA

Tre modi in cui i responsabili IT possono misurare il rendimento dell'automazione

PANORAMICA

Semplifica la transizione al cloud con Red Hat e Google Cloud

CHECKLIST

Cinque consigli per pianificare la migrazione a Red Hat Ansible Automation Platform 2

CHECKLIST

3 vantaggi per la soluzione automatizzata dei problemi prestazionali

EBOOK

Come rendere agile un'architettura monolitica

EBOOK

Red Hat Ansible Automation Platform 2

EBOOK

Guida all'automazione per dirigenti IT

EBOOK

Automazione aziendale in cinque passaggi

EBOOK

Automazione delle reti alla portata di tutti

EBOOK

Automazione all'edge: 7 scenari di utilizzo settoriali con esempi

EBOOK

Automazione della rete con Red Hat

EBOOK

Accelerazione della trasformazione digitale nel settore pubblico con Red Hat Ansible Automation Platform

EBOOK

Il manuale per automation architect

EBOOK

Come rendere agile un'architettura monolitica

EBOOK

Semplifica la gestione dello storage

EBOOK

Apri le porte a nuove possibilità di innovazione e crescita nelle tre aree chiave dell'IT, con Red Hat

Formazione

LEARNING HUB

Accedi a materiale formativo e strumenti pensati per aiutarti a utilizzare Ansible Automation Platform in base alle attività di tuo interesse.

LABORATORI INTERATTIVI

I nostri laboratori interattivi ti consentono di imparare a utilizzare Ansible Automation Platform in diversi scenari di utilizzo dal tuo browser.

PANORAMICA TECNICA

Questa serie di video on demand offre una panoramica sull’utilizzo di Ansible Automation Platform in diversi scenari di applicazione e in diversi ambienti.

AUTOMAZIONE DI RED HAT ENTERPRISE LINUX

In questo corso imparerai ad automatizzare le attività di amministrazione dei sistemi Linux® con l'ultima versione di Ansible Automation Platform.