Extensible Markup Language (XML) e YAML Ain’t Markup Language (YAML), come anche altri linguaggi di serializzazione dei dati, si trovano nei software di gestione dell’infrastruttura come codice, in genere. Conoscerne le differenze permette di massimizzare il potenziale di automazione nello sviluppo delle applicazioni.
Entrambi offrono molte opzioni per automatizzare e strutturare i dati e mettendole a confronto si può individuare quando è più opportuno l’utilizzo di ciascuno di essi.
Sintassi XML
XML è un linguaggio di markup che organizza strutturalmente i dati e consente a due diversi sistemi o applicazioni di scambiare e comprendere il contenuto. Il formato standard che fornisce risulta leggibile sia dall’uomo che dalla macchina, grazie all’uso di tag descrittivi che identificano informazioni specifiche, proprio come l’HTML. Così si possono definire i tag in base alle proprie esigenze e i linguaggi di programmazione che lo riconoscono come standard possono interpretarne i dati.
XML definisce il formato dei dati nei documenti, con estensione .xml. Ne sono un esempio le applicazioni Microsoft 365, come Word ed Excel che lo utilizzano per definire la struttura dei contenuti di un file. I documenti di Microsoft 365 hanno un carattere x alla fine dell’estensione, come .docx, che riflette l’uso del formato XML.
I documenti XML sono costituiti da una struttura ad albero che inizia con un elemento “radice” e si ramifica in uno o più elementi “figli”. Il file si basa su una dichiarazione del tipo di documento (DTD) che ne definisce struttura, componenti e attributi del file. Il tag DTD inizia con <!DOCTYPE> e contiene le regole per la struttura del documento, i tag o il riferimento a un documento esterno definiscono la struttura, i commenti risiedono poi all’interno del tag <–! comment-text –>.
Gli sviluppatori Linux usano spesso XML per passare informazioni strutturate tra le applicazioni mentre gli amministratori dei data center lo sfruttano meno come strumento di configurazione, anche se può aiutarli a connettersi alle fonti di dati. Gli strumenti Infrastructure as code (IaC), come Ansible, possono anche leggere i file XML utilizzando il modulo Ansible XML.
Sintassi YAML
YAML è un linguaggio di serializzazione dei dati nei file di configurazione di Iac che dichiara le impostazioni utilizzando una struttura e una sintassi diverse da quelle di XML. Questo lo rende leggibile solo dall’uomo, non dalla macchina, e utilizzabile principalmente per trasmettere dati piuttosto che per formattarli.
La sua sintassi è rigorosa ma semplice, con spazi bianchi per l’annidarsi delle varie sezioni, senza tabulazioni a definire una struttura gerarchica. YAML non si basa su simboli di formattazione come XML, il che lo rende più facile da leggere e capire. In ambito data center è quindi più utile.
Gli strumenti IAC, come Ansible, Docker Compose, Terraform e AWS CloudFormation, utilizzano YAML per definire e gestire le configurazioni di vari sistemi bare-metal e virtuali e sempre YAML è il formato di file di configurazione più efficace per l’automazione, a livello di coerenza, ripetibilità e facilità di modifica, soprattutto con strumenti come Ansible. Per esempio, Docker Compose utilizza file YAML per definire più servizi o applicazioni e anche la gestione dei container Kubernetes si basa su YAML. Si utilizzano spesso strumenti IaC basati su YAML per gestire le tecnologie basate su Linux: la loro semplicità facilita la revisione dei file e l’immaginazione del layout del centro dati.
Il codice YAML inizia con tre trattini (—) e termina con tre punti (…). Le sezioni dei documenti YAML sono chiamate mappe. Le mappe sono elenchi gerarchici di valori. Gli elenchi iniziano con una chiave che collega a uno o più valori, per esempio, potrei avere una chiave chiamata uccelli con tre valori (aquila, pollo, falco):
# Elenco di uccelli YAML
—
uccelli:
– aquila
– pollo
– falco
…
Lavorare con i file XML e YAML
Potenti editor di testo, come Vim ed Emacs, sono estensibili per supportare documenti XML e YAML e i potenti ambienti di sviluppo integrati (IDE) facilitano la gestione di questi file. Gli autori possono usare qualsiasi editor, ma dovrebbero controllare le estensioni XML e YAML che forniscono funzionalità aggiuntive. Strumenti come Visual Studio Code, Eclipse, Notepad++ e PyCharm offrono funzioni di sviluppo standard, come il controllo degli errori, il completamento automatico e l’evidenziazione della sintassi.
I validatori XML consentono agli autori di verificare la sintassi e la struttura dei loro documenti prima di utilizzarli in produzione. Per esempio, i validatori identificano uno degli errori più comuni di XML: la mancanza di tag di chiusura. La convalida può essere integrata in un editor o in un IDE, oppure può essere un servizio esterno. Gli errori nei documenti XML causano un fallimento immediato, quindi è fondamentale individuarli tempestivamente.
Come per qualsiasi file di configurazione, le misure di controllo della versione sono essenziali. Utilizzare un sistema di repository, come Git, per gestire i file.
Sicurezza dei file XML e YAML
La sicurezza non è un elemento intrinseco dei file di testo, ma l’adozione di altre precauzioni può proteggere l’integrità e la privacy delle risorse XML e YAML nei data center. Ecco alcune idee di base:
- Utilizzare un sistema di controllo delle versioni per garantire l’uso di file aggiornati.
- Eseguire i file XML o YAML da fonti affidabili
- Testare i file di configurazione su macchine virtuali o dispositivi
- Controllare l’accesso utilizzando i permessi
- Considerare la crittografia dei file per proteggere il contenuto.