Yaml verstehen

Yaml verstehen
YAML ist keine Markup -Sprache oder Kurzfilm -Data -Serialisierungssprache, die häufig in Konfigurationsdateien wie Kubernetes, Docker, Ansible und vielem mehr verwendet wird. Seine Popularität ist im Laufe der Jahre gewachsen und macht es zu einem Konkurrenten von JSON.

OK, wenn Yaml keine Markup -Sprache ist, was ist es, was ist es?

Wie bereits erwähnt, ist YAML eine serialisierte Daten, die entwickelt wurde. Betrachten Sie es als einen strengen Superet von JSON oder eine Kreuzung zwischen JSON und XML. Dieser Hybrid ermöglicht es ihm, das zu tun, was JSON kann und weitere zusätzliche Funktionen.

Der Zweck dieses Tutorials besteht darin, Ihnen YAML vorzustellen, Ihnen eine Anleitung zur Syntax der Sprache zu geben, Ihnen schnelle Tools zur Arbeit mit YAML zu geben und Ihnen beizubringen, wie Sie sie für Konfigurationsdateien und mehr verwenden können.

Wie man Yaml schreibt

Das Schreiben von YAML ist unglaublich intuitiv (ich denke, das ist der Punkt), da es die Schlüssel-Wert-Paarsyntax verwendet. Somit ist es wie ein Wörterbuch in Python. Im Gegensatz zu Python erlaubt Yaml jedoch keinen Tab -Abstand. Es verwendet Leerzeichen.

Die allgemeine Syntax ist:

Schlüsselwert

Um ein neues YAML -Dokument zu beginnen, beginnen wir mit drei Strichen, die den Beginn einer neuen Datei angeben.

Mit dieser Funktion können Sie mehrere Dokumente durch die Striche in einer einzelnen Datei getrennt haben.

Erstellen Sie eine Datei mit a .YAML -Erweiterung und fügen Sie den folgenden Inhalt hinzu.

---

Sprache: Python

Autor: Guido van Rossum

Land: Niederlande
---

Sprache: JavaScript

Autor: Brendan Eich

Land: Vereinigte Staaten
---

Sprache: Ruby

Autor: Yukihiro Matsumoto

Land: Japan

Wie Sie aus der obigen Datei sehen können, beginnt jedes Dokument in YAML mit drei Punkten, gefolgt von den Daten, die in Schlüsselwertpaaren gespeichert sind.

Installieren Sie einen YAML -Linter

Bevor Sie weiter fortfahren, bestätigen wir, dass das, was wir haben, eine gültige YAML -Datei ist. Dazu müssen wir einen YAML -Linter installieren.

Ein Linter ist ein Tool, das den Entwickler über Programmierfehler wie Syntaxfehler und ungültige Konstrukte überprüft und benachrichtigt. Beispielsweise können Sie nach der gültigen Syntax einer Datei überprüfen.

In unserem Beispiel werden wir Yamllint verwenden.

Verwenden Sie zum Installieren von APT als:

sudo apt-Get-Update
sudo apt -get install yamllint -y

Nach der Installation können wir den Linter mit dem Befehl an der Datei ausführen

echo -e 'Dies ist eine gültige: yaml syntax' | Yamllint -Probe.Yaml

Wenn die Datei eine gültige YAML -Syntax enthält, gibt sie uns keine Ausgabe.

Fügen Sie nun mit Hinzufügen von Leerzeichen in der YAML -Datei oder fügen Sie unten einen einzelnen Armaturenbrett hinzu

---

Sprache: Python

Autor: Guido van Rossum

Land: Niederlande
---

Sprache: JavaScript

Autor: Brendan Eich

Land: Vereinigte Staaten
---

Sprache: Ruby

Autor: Yukihiro Matsumoto

Land: Japan
-

Wenn wir den Linter gegen diese Datei ausführen, werden die Fehler angezeigt, wie unten gezeigt:

Probe.Yaml
15: 1 Fehlersyntaxfehler: Erwartet, aber gefunden '-' (Syntax)

NOTIZ: Wie Wörterbücher in Python und ähnliche Datenstrukturen in verschiedenen Programmiersprachen müssen die Schlüsselwertpaare in einem YAML-Dokument eindeutig sein.

YAML -Datentypen

YAML unterstützt verschiedene Möglichkeiten zur Darstellung von Daten. Sie beinhalten:

#: Skalare Typen

Dies sind der häufigste Datentyp in YAML. Sie befinden sich in Form von Schlüsselwertpaaren, wie im obigen Beispiel gezeigt.

Die Werte in einem Paar können jede Art wie Zeichenfolge, Zahlen einschließlich Hexadezimal, Ganzzahlen und dergleichen sein.

#: Saiten

YAML unterstützt auch Saiten, die in einzelnen oder doppelten Quoten eingeschlossen sind. Dies ist keine Anforderung, wie der Yaml -Parser es herausfindet, kann aber hilfreich sein, insbesondere in Strings mit Fluchtcharakteren.

Im Folgenden sind Beispiele für gültige Zeichenfolgen in YAML aufgeführt.

---

String: Dies ist eine Zeichenfolge

String2: "Dies ist auch eine Zeichenfolge"

String: 'so ist dieser' auch '

NOTIZ: Stellen Sie sicher, dass Sie die doppelten oder einzelnen Zitate schließen, soweit. Das Folgende führt zu einem Fehler.

---
Ungültig: 'Das ist falsch

Verwenden Sie das (größer als) Zeichen (größer als) ein Absatz in einer YAML -Datei. Denken Sie daran, vor der Linie einen Platz hinzuzufügen. Zum Beispiel:

---
Para:>

Erstellen eines Absatzes
das erstreckt sich über mehr als einen
Linie.

#: Numerische Typen

Der andere in YAML unterstützte Datentyp ist numerische Typen. Zu den numerischen Typen gehören Ganzzahlen, Dezimalstellen, Hexadezimal-, Oktal- und andere numerische Typen.

Die folgende YAML -Syntax repräsentiert numerische Typen.

---

int: 100

Hex: 0x7f000001

Oktal: 0177

Float: 127.0

Expo: 6.022e+23

#: Listen

Listen in YAML werden unter Verwendung eines einzelnen Armaturenbretts als:

---
- Liste
- andere
- und ein anderer

#: Sequenzen

Sequenzen sind Datentypen. Zum Beispiel:

---

Server:

- Apache
- 2.07
- LAMPP

#: Zuordnungen

Die Zuordnung ist einer Sequenz ziemlich ähnlich, besteht jedoch aus Schlüsselwertpaaren, die alle unter einer Untergruppe enthalten sind.

Hier ist ein Beispiel:

---

Server:

- Apache:

Name: Server1

OS: Debian 10

Version 2.4.46

- Iis:

Name: IIS-V01

Betriebssystem: Windows Datacenter 2019

Version: 10.0.17763

#: Null

Wir setzen einen Null in Yaml mit einem Tilde (~) oder dem String -Null, wie im folgenden Beispiel gezeigt:

---
Tilde: ~
var: null

#: Arrays

Arrays in YAML werden mit den Quadratklammern in einer einzelnen Linie angegeben. Das folgende Beispiel zeigt die Definition von Arrays in YAML.

---
Zahlen: [1,2,3,4,5,6,7,8,9,10]
Saiten: ["Hallo", "Welt", "von", "LinuxHint"]

Yaml kommentiert

YAML unterstützt auch Kommentare, mit denen Sie den YAML -Daten zusätzliche Informationen hinzufügen können. Der Parser ignoriert Kommentare.

YAML -Kommentare beginnen mit einem Octothorpe (#).
---
# Dies ist ein Kommentar in Yaml

Verarbeiten yaml an json

In einigen Fällen müssen wir Yaml möglicherweise in JSON umwandeln. Da die beiden eng miteinander verbunden sind, ist es sinnvoll, einen von den anderen zu brauchen.

Für solche Szenarien können wir ein Tool wie YQ verwenden, das ein YAML/XML -Parser für JQ ist.

Verwenden Sie PIP mit dem Befehl wie gezeigt:

PIP3 INSTALLE YQ

NOTIZ: Stellen Sie sicher, dass Sie JQ installiert haben, da dies eine erforderliche Abhängigkeit für YQ ist.

Angenommen, wir haben eine Beispielkubernetes -Pod -Erstellungsdatei (Kubernetes.yaml) mit dem Inhalt wie gezeigt:

---
apiversion: v1
Art: Pod
Metadaten:
Name: Store-Site
Etiketten:
App: Web
Spezifikation:
Behälter:
- Name: Nginx
Bild: Nginx
Häfen:
- Containerport: 8080
Volumemounts:
- Name: Meister
MountPath:/var/www/html/nginx
DNSPolicy: Standard
Bände:
- Name: home_directory
leereDir:

NOTIZ: Die obige Datei dient zu Illustrationszwecken und kann Fehler enthalten, wenn sie in einer realen Kubernetes -Instanz verwendet werden.

Verwenden Sie den Befehl, um die YAML -Datei in JSON zu konvertieren:

sudo yq eval -j kubernetes.Yaml

Nach Ausführung des obigen Befehls wird der Inhalt der Datei automatisch in JSON konvertiert, wie unten gezeigt:


"apiversion": "v1",
"Art": "Pod",
"Metadaten":
"Name": "Store-Site",
"Labels":
"App": "Web"

,
"spec":
"Behälter": [

"Name": "nginx",
"Bild": "nginx",
"Häfen": [

"Containerport": 8080

],
"Volumemounts": [

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

]

],
"dnspolicy": "Standard",
"Volumes": [

"Name": "home_directory",
"leseDir":

]

Das macht das Erleichterung des Wechsels von JSON zu YAML und umgekehrt einfacher.

Abschluss

YAML ist ein unglaublich leistungsfähiges Tool, mit dem Sie hochlesbare und kompatible Konfigurationsdateien für Support -Dienste erstellen können. Mit den Konzepten in diesem Tutorial sind Sie in der Lage, komplexe YAML -Dokumente für Ihre Anwendungen oder Anwendungen zu erstellen, die YAML unterstützen.

Vielen Dank und Happy Coding!