GNU/Linux >> LINUX-Kenntnisse >  >> Linux

YAML-Grundlagen, die jeder DevOps-Ingenieur kennen muss

YAML hat in den letzten Jahren sehr an Popularität gewonnen, da es Teil wichtiger DevOps-Tools, -Technologien und -Prozesse wie Ansible, Kubernetes, CI/CD-Pipelines usw. wurde.

Wir haben bereits viele Tutorials zu Ansible und Kubernetes behandelt. Ich habe daran gedacht, die Grundlagen von YAML abzudecken, damit Sie für ein reibungsloseres Arbeiten mit der Konfiguration Ihrer DevOps-Tools sorgen müssen.

Was ist YAML?

YAML steht für "YAML Ain't Markup Language" war ursprünglich ein Akronym für „Yet Another Markup Language“. YAML ist eine Sprache zur „Datenserialisierung“ und im Grunde ein für Menschen lesbares strukturiertes Datenformat.

Es ist lese- und schreibfreundlich gestaltet. Als praktikable Alternative zu JSON bietet sich die Objektserialisierung von YAML an. YAML ist eine Obermenge von JSON mit der Verwendung von einrückungsbasiertem Scoping, um die Struktur wie Python zu bezeichnen.

Hier ist ein YAML-Beispielbeispiel:

--- 
 Student-ID: 314159
 First-Name: Linus
 Last-Name: Torvalds

Phone-numbers:
    - 281.555.7777
    - 832.676.8888
    - 937.996.9999

Addresses:
    - Street: 123 Main St.
    - City: Houston
    - State: Tx
---

YAML-Grundregeln, an die Sie sich immer erinnern sollten

Wenn Sie beim Parsen Ihrer YAML-Datei keine wiederholten Fehler sehen möchten, müssen Sie bei der Arbeit an YAML immer Folgendes beachten:

  • Tabs sind in YAML NICHT erlaubt. Sie sollten Leerzeichen für Einrückungen verwenden.
  • Obwohl die Menge an Leerzeichen keine Rolle spielt, solange der Einzug des untergeordneten Knotens größer ist als der des übergeordneten Knotens, ist es eine gute Praxis, die gleiche Anzahl von Leerzeichen beizubehalten.
  • Zwischen verschiedenen Elementen von YAML muss Platz sein (später erklärt).
  • Bei YAML wird zwischen Groß- und Kleinschreibung unterschieden.
  • YAML-Datei sollte mit Erweiterungen wie .yaml enden oder .yml .
  • YAML erlaubt UTF-8-, UTF-16- und UTF-32-Kodierung.

Lassen Sie uns jetzt die YAML-Syntax verstehen.

Elemente einer YAML-Datei:Grundlegende Syntax

Eine YAML-Datei wird verwendet, um Daten zu beschreiben. In einer YAML-Datei dreht sich alles um eine Sammlung von Schlüssel-Wert-Paaren wobei der Wert alles sein kann, von einer Zeichenkette bis zu einem Baum.

Lassen Sie es uns an einem Beispiel verstehen. Dies ist eine Kubernetes-Dienstmanifestdatei.

kind: Service
metadata:  
  name: web-app-svc
spec:  
  type: NodePort  
  ports:  
  - port: 8080         #service port    
    targetPort: 8080   #Pod Port    
    nodePort: 30012  #Node Port from the range - 30000-32767  
  selector:    
    app: web-app

Es ist selbsterklärend, dass es sich um eine Reihe von Schlüssel-Wert-Paar-Elementen handelt:Name: Value .

Wie Sie der obigen Datei entnehmen können, besteht eine YAML-Datei aus einer Reihe verschiedener Elemente. Zusammen können sie verwendet werden, um eine Vielzahl von Strukturen zu beschreiben.

1. Leerzeichen oder Einrückung

In YAML rücken Sie mit Leerzeichen ein, nicht mit Tabulatoren. Und zwischen den Elementen MUSS ein Leerzeichen sein.

Richtige Angabe:

Kind:Service

Falsche Angabe:

Kind:Service

Weil in der obigen Anweisung kein Leerzeichen nach dem Doppelpunkt steht!

2. Kommentare in YAML

Kommentare können definiert werden, indem ein Hash vor ein Element gesetzt wird '# '. Kommentare können am Anfang einer Zeile oder an beliebiger Stelle in der Zeile gemacht werden.

Wenn Sie unsere YAML-Konfigurationsdatei durchgehen, haben wir drei Inline-Kommentare wie "#service port" usw.

3. Skalar (Schlüsselwert)

Skalare sind die Zeichenfolgen und Zahlen, aus denen die Daten auf der Seite bestehen. Vereinfacht ausgedrückt sind sie die Schlüssel-Werte-Paare.

kind: Service
metadata:  
  name: web-app-svc

4. Sammlungen und Listen

Listen- und Sammlungselemente oder Mitglieder sind die Zeilen, die auf derselben Einrückungsebene beginnen, beginnend mit einem Bindestrich, gefolgt von einem Leerzeichen.

- web-app-prod 
- prod-deployments 
- prom-monitored

Es ist eine einfache Liste, bei der jedes Element in der Liste in einer eigenen Zeile mit einem öffnenden Bindestrich platziert wird.

5. Verschachtelte Sammlungen

Wenn Sie eine verschachtelte Sequenz mit Elementen und Unterelementen erstellen möchten, können Sie dies tun, indem Sie vor jedem Bindestrich in den Unterelementen ein einzelnes Leerzeichen setzen.

- 
 - web-app-prod 
 - prod-deployments 
 - prom-monitored
-  
 - web-app-test 
 - staging-deployments 
 - not-monitored

6. Wörterbücher

Wörterbücher bestehen aus einem key: value Format mit eingerücktem Inhalt.

ports:    
- port: 8080         #service port    
  targetPort: 8080   #Pod Port    
  nodePort: 30012  #Node Port from the range - 30000-32767

Sie können Sammlungen von Listen und Wörterbüchern wie folgt zusammenführen und vermischen:

ports:    
- port: 8080         #service port    
  targetPort: 8080   #Pod Port    
  nodePort:       
  - 30012       
  - 30013       
  - 30014

Dies sind sehr grundlegende Konzepte von YAML, aber für einen DevOps-Ingenieur unerlässlich.

Sie brauchen keinen speziellen Editor für YAML. Ihr bevorzugter Texteditor sollte bereits YAML unterstützen oder bei Bedarf ein Plugin verwenden.

Es gibt viele Dinge, die Sie tiefer graben und lernen können. Dazu können Sie jederzeit auf die offizielle Dokumentation von YAML verweisen.

Möchten Sie ein besserer Systemadministrator oder DevOps werden? Werden Sie noch heute Mitglied des Linux-Handbuchs.


Linux
  1. 10 Befehle, die jeder Linux-Benutzer kennen sollte

  2. 3 nützliche Hacks, die jeder Linux-Benutzer kennen muss

  3. 7 Linux-Netzwerkbefehle, die jeder Systemadministrator kennen sollte

  4. 17 Linux-Befehle, die jeder Systemadministrator kennen sollte

  5. Redhat vs. Ubuntu:15 grundlegende Fakten, die Sie kennen müssen

13 Linux-Terminal-Shortcuts, die jeder Power Linux-Benutzer kennen muss

DevOps vs. Software Engineer:Was ist der Unterschied?

Hauptaufgaben eines DevOps-Ingenieurs

Linux-Terminal-Tricks, die jeder Linux-Enthusiast kennen muss!

Top 50+ Linux-Befehle, die Sie kennen MÜSSEN

Die 20 besten Linux-Gaming-Websites, die jeder Gamer kennen muss