Comprensione di Yaml

Comprensione di Yaml
Yaml Ain't Markup Language o Yaml per corto è il linguaggio di serializzazione dei dati comunemente utilizzato in file di configurazione come Kubernetes, Docker, Ansible e molti altri. La sua popolarità è cresciuta nel corso degli anni, rendendolo un po 'concorrente a JSON.

Ok, se Yaml non è un linguaggio di markup, che cos'è?

Come accennato, YAML è un linguaggio serializzato di dati sviluppato per migliorare la leggibilità umana utilizzando il rientro e le strutture di dati native. Pensalo come un rigoroso superset di JSON o un incrocio tra JSON e XML. Questo ibrido gli consente di fare ciò che JSON può e più funzionalità aggiuntive.

Lo scopo di questo tutorial è di presentarti a Yaml, darti una guida sulla sintassi della lingua, fornirti strumenti rapidi per lavorare con YAML e insegnarti come usarlo per i file di configurazione e altro ancora.

Come scrivere yaml

Scrivere Yaml è incredibilmente intuitivo (immagino che sia il punto) in quanto utilizza la sintassi della coppia di valore chiave. Quindi, è come un dizionario in Python. Tuttavia, a differenza di Python, Yaml non consente la spaziatura delle schede; Usa spazi.

La sintassi generale è:

Chiave: valore

Per iniziare un nuovo documento YAML, iniziamo con tre trattini che indicano l'inizio di un nuovo file.

Questa funzione consente di disporre più documenti separati dai trattini in un singolo file.

Crea un file con a .Estensione Yaml e aggiungi i seguenti contenuti.

---

Lingua: Python

Autore: Guido Van Rossum

Paese: Paesi Bassi
---

Lingua: JavaScript

Autore: Brendan Eich

Paese: Stati Uniti
---

Lingua: Ruby

Autore: Yukihiro Matsumoto

Paese: Giappone

Come puoi vedere dal file sopra, ogni documento in YAML inizia con tre punti, seguiti dai dati memorizzati in coppie di valore chiave.

Installa un Linter Yaml

Prima di procedere ulteriormente, confermiamo che quello che abbiamo è un file YAML valido. Per fare questo, dobbiamo installare un maintempo.

Un Linter è uno strumento che controlla e notifica allo sviluppatore di errori di programmazione come errori di sintassi e costrutti non validi. Ad esempio, consente di verificare la sintassi valida di un file.

Nel nostro esempio, useremo Yamllint.

Per installare, utilizzare APT come:

Sudo Apt-get Aggiornamento
sudo apt -get install yamllint -y

Una volta installato, possiamo eseguire il linter contro il file usando il comando

echo -e 'Questa è una valida: sintassi yaml' | campione di yamllint.Yaml

Se il file contiene una sintassi di YAML valida, non ci dà alcun output.

Ora, prova ad aggiungere spazi all'interno del file YAML o aggiungi un singolo trattino in basso come:

---

Lingua: Python

Autore: Guido Van Rossum

Paese: Paesi Bassi
---

Lingua: JavaScript

Autore: Brendan Eich

Paese: Stati Uniti
---

Lingua: Ruby

Autore: Yukihiro Matsumoto

Paese: Giappone
-

Se eseguiamo il linter contro questo file, gli errori vengono visualizzati, come mostrato di seguito:

campione.Yaml
15: 1 Errore Errore di sintassi: previsto, ma trovato '-' (Sintassi)

NOTA: Come i dizionari in Python e strutture di dati simili in vari linguaggi di programmazione, le coppie di valore chiave in un documento YAML devono essere uniche.

Tipi di dati YAML

YAML supporta vari modi per rappresentare i dati. Loro includono:

#: Tipi scalari

Questi sono il tipo di dati più comune in YAML. Sono sotto forma di coppie di valore chiave, come mostrato nell'esempio sopra.

I valori in una coppia possono essere qualsiasi tipo come stringa, numeri inclusi esadecimale, numeri interi e simili.

#: Stringhe

YAML supporta anche stringhe racchiuse in singoli o doppi quote. Questo non è un requisito in quanto il parser YAML lo capirà ma può essere utile, specialmente nelle stringhe con personaggi di fuga.

Di seguito sono riportati esempi di stringhe valide in yaml.

---

String: questa è una stringa

String2: "Questa è anche una stringa"

String: 'così è questo'

NOTA: Assicurarsi di chiudere le citazioni doppie o singole dove utilizzate. Quanto segue si tradurrà in un errore.

---
non valido: 'Questo non è corretto

Per aggiungere un paragrafo in un file YAML, utilizzare il segno (maggiore di). Ricorda di aggiungere uno spazio prima della linea. Per esempio:

---
para:>

creazione di un paragrafo
che si estende per più di uno
linea.

#: Tipi numerici

L'altro tipo di dati supportati in YAML è tipi numerici. I tipi numerici includono numeri interi, decimali, esadecimale, ottale e altri tipi numerici.

La seguente sintassi YAML rappresenta i tipi numerici.

---

int: 100

esagono: 0x7f000001

ottale: 0177

Float: 127.0

Expo: 6.022e+23

#: Elenchi

Gli elenchi in YAML sono specificati utilizzando un singolo trattino come:

---
- elenco
- un altro
- e un altro

#: Sequenze

Le sequenze sono tipi di dati utilizzati per contenere più valori in un singolo la stessa chiave. Per esempio:

---

server:

- Apache
- 2.07
- Lampp

#: Mappature

La mappatura è abbastanza simile a una sequenza ma composta da coppie di valore chiave tutte contenute in un sottogruppo.

Ecco un esempio:

---

Server:

- Apache:

Nome: Server1

OS: Debian 10

Versione: 2.4.46

- IIS:

Nome: IIS-V01

OS: Windows Datacenter 2019

Versione: 10.0.17763

#: Nullo

Abbiamo impostato un null in yaml usando un tilde (~) o la stringa null come mostrato nell'esempio seguente:

---
Tilde: ~
VAR: NULL

#: Array

Gli array in YAML sono specificati utilizzando le staffe quadrate in una singola linea. Il seguente esempio mostra la definizione di array in yaml.

---
Numeri: [1,2,3,4,5,6,7,8,9,10]
Strings: ["Hello", "World", "Da", "Linuxhint"]

Commenti di Yaml

YAML supporta anche commenti che consente di aggiungere ulteriori informazioni ai dati YAML. Il parser ignora i commenti.

I commenti di Yaml iniziano con un Octothorpe (#).
---
# Questo è un commento in Yaml

Elabora yaml a json

In alcuni casi, potremmo aver bisogno di convertire YAML in JSON. Poiché i due sono strettamente correlati, ha senso aver bisogno di uno dall'altro.

Per tali scenari, possiamo usare uno strumento come YQ, che è un parser YAML/XML per JQ.

Per installarlo, utilizzare PIP con il comando come mostrato:

PIP3 Installa yq

NOTA: Assicurati di avere JQ installato in quanto è una dipendenza richiesta per YQ.

Supponiamo di avere un file di creazione di pod Kubernetes campione (Kubernetes.Yaml) con il contenuto come mostrato:

---
Apiversion: V1
Tipo: pod
Metadati:
Nome: Store-sito
Etichette:
App: Web
Spec:
Contenitori:
- Nome: nginx
Immagine: nginx
Porte:
- Containerport: 8080
VolumeMounts:
- Nome: Maestro
MountPath:/var/www/html/nginx
DNSpoLicy: predefinito
Volumi:
- Nome: home_directory
vuoto:

NOTA: Il file sopra è a scopo di illustrazione e può contenere errori se utilizzato in un'istanza Kubernetes reale.

Per convertire il file YAML in JSON, utilizzare il comando:

sudo yq valuta -j kubernetes.Yaml

Al momento dell'esecuzione del comando sopra, il contenuto del file viene convertito automaticamente in JSON, come mostrato di seguito:


"Apiversion": "V1",
"Kind": "Pod",
"Metadati":
"Nome": "Store-sito",
"Etichette":
"App": "Web"

,
"Spec":
"Container": [

"nome": "nginx",
"Immagine": "Nginx",
"Porte": [

"Containerport": 8080

",
"VolumeMounts": [

"Nome": "Master",
"MountPath": "/var/www/html/nginx"

"

",
"DNSpoLicy": "Predefinito",
"Volumi": [

"Nome": "home_directory",
"EmptyDir":

"

Ciò semplifica le opere quando si passa da JSON a YAML e viceversa.

Conclusione

Yaml è uno strumento incredibilmente potente che ti consente di creare file di configurazione altamente leggibili e compatibili per i servizi di supporto. Utilizzando i concetti in questo tutorial, sei in grado di costruire documenti YAML complessi per le tue applicazioni o applicazioni a supporto di YAML.

Grazie e felice programmazione!