Forstå yaml

Forstå yaml
Yaml er ikke markeringsspråk eller yaml for kort er dataserialiseringsspråk ofte brukt i konfigurasjonsfiler som Kubernetes, Docker, Ansible og mange flere. Populariteten har vokst gjennom årene, noe som gjør det til en konkurrent til JSON.

Ok, hvis Yaml ikke er markeringsspråk, hva er det?

Som nevnt er YAML et dataserialisert språk utviklet for å forbedre menneskelig lesbarhet ved å bruke innrykk og naturlige datastrukturer. Tenk på det som et strengt supersett av JSON eller en krysning mellom JSON og XML. Denne hybriden lar den gjøre det JSON kan og flere flere funksjoner.

Hensikten med denne opplæringen er å introdusere deg for YAML, gi deg en guide til syntaks på språket, gi deg raske verktøy for å jobbe med YAML og lære deg hvordan du bruker den til konfigurasjonsfiler og mer.

Hvordan du skriver yaml

Å skrive YAML er utrolig intuitivt (jeg antar at det er poenget) ettersom det bruker syntaks for nøkkelverdipar. Dermed er det som en ordbok i Python. I motsetning til Python, tillater YAML imidlertid ikke tabavstand; Den bruker mellomrom.

Den generelle syntaksen er:

Nøkkel: Verdi

For å starte et nytt YAML -dokument, starter vi med tre streker som indikerer begynnelsen på en ny fil.

Denne funksjonen lar deg få flere dokumenter atskilt med strekene i en enkelt fil.

Opprette en fil med en .YAML -utvidelse og legg til følgende innhold.

---

Språk: Python

Forfatter: Guido Van Rossum

Land: Nederland
---

Språk: JavaScript

Forfatter: Brendan Eich

Land: USA
---

Språk: Ruby

Forfatter: Yukihiro Matsumoto

Land: Japan

Som du ser fra filen ovenfor, starter hvert dokument i YAML med tre prikker, etterfulgt av dataene som er lagret i nøkkelverdipar.

Installer en Yaml Linter

Før du fortsetter videre, la oss bekrefte at det vi har er en gyldig YAML -fil. For å gjøre dette, må vi installere en Yaml Linter.

En Linter er et verktøy som sjekker og varsler utvikleren av programmeringsfeil som syntaksfeil og ugyldige konstruksjoner. For eksempel lar det deg se etter den gyldige syntaksen til en fil.

I vårt eksempel skal vi bruke Yamllint.

For å installere, bruk APT som:

sudo apt-get oppdatering
sudo apt -get installer yamllint -y

Når vi er installert, kan vi kjøre Linter mot filen ved hjelp av kommandoen

Echo -e 'Dette er en gyldig: YAML Syntax' | Yamllint prøve.Yaml

Hvis filen inneholder gyldig YAML -syntaks, gir den ingen utdata.

Prøv nå å legge til mellomrom inne i YAML -filen eller legge til en enkelt strek i bunnen som:

---

Språk: Python

Forfatter: Guido Van Rossum

Land: Nederland
---

Språk: JavaScript

Forfatter: Brendan Eich

Land: USA
---

Språk: Ruby

Forfatter: Yukihiro Matsumoto

Land: Japan
-

Hvis vi kjører Linter mot denne filen, vises feilene, som vist nedenfor:

prøve.Yaml
15: 1 Feil Syntaksfeil: Forventet, men funnet '-' (Syntaks)

MERK: Som ordbøker i Python og lignende datastrukturer på forskjellige programmeringsspråk, må nøkkelverdiparene i et YAML-dokument være unik.

YAML -datatyper

YAML støtter forskjellige måter å representere data. De inkluderer:

#: Skalartyper

Dette er den vanligste datatypen i YAML. De er i form av nøkkelverdipar, som vist i eksemplet ovenfor.

Verdiene i et par kan være hvilken som helst type som streng, tall inkludert heksadesimal, heltall og slikt.

#: Strenger

YAML støtter også strenger innelukket i enkelt- eller dobbeltkvoter. Dette er ikke et krav da YAML -parseren vil finne ut av det, men kan være nyttig, spesielt i strenger med rømningskarakterer.

Følgende er eksempler på gyldige strenger i YAML.

---

Streng: Dette er en streng

String2: "Dette er også en streng"

streng: 'Så er dette'

MERK: Forsikre deg om å lukke doble eller enkelt sitater der det brukes. Følgende vil resultere i en feil.

---
ugyldig: 'Dette er feil

For å legge til et avsnitt i en YAML -fil, bruk (større enn) tegnet. Husk å legge til et rom før linjen. For eksempel:

---
Para:>

Opprette et avsnitt
som spenner over mer enn en
linje.

#: Numeriske typer

Den andre datatypen som støttes i YAML er numeriske typer. Numeriske typer inkluderer heltall, desimaler, heksadesimale, oktale og andre numeriske typer.

Følgende YAML -syntaks representerer numeriske typer.

---

int: 100

Hex: 0x7F000001

Octal: 0177

Float: 127.0

Expo: 6.022E+23

#: Lister

Lister i YAML er spesifisert ved hjelp av en enkelt strek som:

---
- liste
- en annen
- og en til

#: Sekvenser

Sekvenser er datatyper som brukes til å holde flere verdier i en enkelt den samme nøkkelen. For eksempel:

---

server:

- Apache
- 2.07
- LAMPP

#: Kartlegginger

Kartlegging er ganske lik en sekvens, men består av nøkkelverdipar alle inneholdt under en undergruppe.

Her er et eksempel:

---

Servere:

- apache:

Navn: Server1

OS: Debian 10

versjon: 2.4.46

- IIS:

Navn: IIS-V01

OS: Windows Datacenter 2019

Versjon: 10.0.17763

#: Null

Vi setter en null i YAML ved hjelp av en Tilde (~) eller strengen NULL som vist i eksemplet nedenfor:

---
Tilde: ~
var: null

#: Arrays

Arrays i YAML er spesifisert ved hjelp av firkantede parenteser i en enkelt linje. Følgende eksempel viser definisjonen av matriser i YAML.

---
Tall: [1,2,3,4,5,6,7,8,9,10]
Strenger: ["Hello", "World", "From", "Linuxhint"]

Yaml kommenterer

YAML støtter også kommentarer som lar deg legge til ekstra informasjon i YAML -dataene. Parseren ignorerer kommentarer.

YAML -kommentarer begynner med en octothorpe (#).
---
# Dette er en kommentar i Yaml

Behandle YAML til JSON

I noen tilfeller kan det hende vi må konvertere YAML til JSON. Siden de to er nært beslektede, er det fornuftig å trenge den ene fra den andre.

For slike scenarier kan vi bruke et verktøy som YQ, som er en YAML/XML -parser for JQ.

For å installere det, bruk Pip med kommandoen som vist:

PIP3 installer yq

MERK: Forsikre deg om at du har JQ installert, da det er en nødvendig avhengighet for YQ.

Anta at vi har et eksempel på Kubernetes Pod Creation File (Kubernetes.yaml) med innholdet som vist:

---
APIVIVERSION: V1
Kind: Pod
metadata:
Navn: Store-sted
Etiketter:
App: Web
spesifikasjon
Containere:
- Navn: Nginx
Bilde: Nginx
Porter:
- Containerport: 8080
Volumemounts:
- Navn: Master
mountpath:/var/www/html/nginx
dnspolicy: standard
Volum:
- Navn: Home_Directory
EmptyDir:

MERK: Ovennevnte fil er til illustrasjonsformål og kan inneholde feil hvis de brukes i en ekte Kubernetes -forekomst.

For å konvertere YAML -filen til JSON, bruk kommandoen:

sudo yq eval -j kubernetes.Yaml

Når du utfører kommandoen over, blir innholdet i filen automatisk konvertert til JSON, som vist nedenfor:


"Apiversion": "V1",
"snill": "pod",
"Metadata":
"Navn": "Store-sted",
"Etiketter":
"App": "Web"

,
"SPEC":
"Containere": [

"Navn": "Nginx",
"Bilde": "Nginx",
"Porter": [

"Containerport": 8080

],
"Volumemounts": [

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

]

],
"dnspolicy": "standard",
"Volum": [

"Navn": "Home_Directory",
"EmptyDir":

]

Det gjør verk enklere når du bytter fra JSON til YAML og omvendt.

Konklusjon

YAML er et utrolig kraftig verktøy som lar deg bygge svært lesbare og kompatible konfigurasjonsfiler for støttetjenester. Ved hjelp av konseptene i denne opplæringen er du i stand til å bygge komplekse YAML -dokumenter for applikasjonene dine eller applikasjoner som støtter YAML.

Takk og lykkelig koding!