YAML-Syntax-Tutorial: Eine praktische Einführung
YAML (YAML Ain't Markup Language) ist ein menschenlesbares Daten-Serialisierungsformat, das umfassend in Konfigurationsdateien, CI/CD-Pipelines und Infrastructure-as-Code verwendet wird. Wenn Sie mit Docker Compose, Kubernetes, GitHub Actions oder Ansible arbeiten, verwenden Sie YAML bereits täglich. Dieses Tutorial behandelt alles, was Sie brauchen, um YAML sicher zu schreiben.
Warum YAML?
YAMLs Hauptvorteil ist Lesbarkeit. Vergleichen Sie die gleichen Daten in JSON und YAML:
JSON:
{
"server": {
"host": "localhost",
"port": 8080,
"debug": true,
"allowed_origins": ["http://localhost:3000", "https://example.com"]
}
}
YAML:
server:
host: localhost
port: 8080
debug: true
allowed_origins:
- http://localhost:3000
- https://example.com
YAML erreicht die gleiche Struktur mit weniger Interpunktion. Keine geschweiften Klammern, keine eckigen Klammern für einfache Fälle, kein obligatorisches Quoting. Das macht Konfigurationsdateien einfacher zu lesen und von Hand zu bearbeiten.
Grundlegende Datentypen
Skalare
YAML leitet Typen automatisch aus Werten ab:
string: hello world # String (keine Anführungszeichen nötig)
quoted: "hello world" # Expliziter String
integer: 42 # Ganzzahl
float: 3.14 # Fließkommazahl
boolean: true # Boolean (true/false, yes/no, on/off)
null_value: null # Null (auch ~ oder leer)
date: 2025-01-15 # Datum (ISO 8601)
Häufiger Fallstrick: Werte wie yes, no, on, off werden als Booleans interpretiert. Wenn Sie den String "yes" meinen, quoten Sie ihn: "yes".
Strings und Quoting
Strings brauchen selten Anführungszeichen, aber einige Fälle erfordern sie:
plain: This is a plain string
single: 'Preserves \n as literal backslash-n'
double: "Interprets \n as newline"
colon: "value: with colon needs quotes"
hash: "value # with hash needs quotes"
Mehrzeilige Zeichenketten
YAML hat zwei mehrzeilige Stile:
Literal Block (|) — behält Zeilenumbrüche bei:
description: |
This is line one.
This is line two.
This is line four (after blank line).
Folded Block (>) — verbindet Zeilen mit Leerzeichen:
description: >
This is a long paragraph
that will be folded into
a single line.
Fügen Sie - hinzu, um nachgestellte Zeilenumbrüche zu entfernen (|-, >-) oder +, um sie zu behalten (|+, >+).
Sammlungen
Listen (Sequenzen)
# Block-Style
fruits:
- apple
- banana
- cherry
# Flow-Style (inline)
fruits: [apple, banana, cherry]
Maps (Mappings)
# Block-Style
person:
name: Alice
age: 30
city: London
# Flow-Style
person: {name: Alice, age: 30, city: London}
Verschachtelte Strukturen
departments:
- name: Engineering
lead: Alice
members:
- Bob
- Charlie
- name: Design
lead: Diana
members:
- Eve
Anchors und Aliases
Anchors (&) und Aliases (*) ermöglichen die Wiederverwendung von Werten:
defaults: &defaults
adapter: postgres
host: localhost
port: 5432
development:
database: dev_db
<<: *defaults
production:
database: prod_db
<<: *defaults
host: db.example.com # Standard überschreiben
Der << Merge-Key übernimmt alle Eigenschaften vom Anchor. Eigenschaften, die nach dem Merge definiert werden, überschreiben die Anchor-Werte. Mehr über fortgeschrittene Anchor-Muster erfahren Sie in unserem YAML Anchors und Aliases Leitfaden.
Mehrere Dokumente
Eine einzelne YAML-Datei kann mehrere Dokumente enthalten, getrennt durch ---:
---
# Dokument 1: Config
apiVersion: v1
kind: ConfigMap
---
# Dokument 2: Service
apiVersion: v1
kind: Service
Dies wird häufig in Kubernetes-Manifesten verwendet.
Häufige Fallstricke
1. Einrückungsfehler
YAML verwendet Leerzeichen, niemals Tabs. Inkonsistente Einrückung ist der häufigste Fehler:
# FALSCH - gemischte Einrückung
server:
host: localhost
port: 8080 # Fehler: unerwartete Einrückung
# RICHTIG
server:
host: localhost
port: 8080
Verwenden Sie unseren YAML Formatter, um Einrückungsprobleme automatisch zu beheben.
2. Das Norwegen-Problem
Ländercodes wie NO (Norwegen) werden als Boolean false interpretiert:
# FALSCH
countries:
- NO # Wird als false interpretiert!
- SE
- DK
# RICHTIG
countries:
- "NO"
- SE
- DK
3. Nicht-quotierte Sonderzeichen
Doppelpunkte, Rauten und Klammern in Werten müssen gequotet werden:
# FALSCH
message: Error: file not found
url: http://example.com # Könnte brechen
# RICHTIG
message: "Error: file not found"
url: "http://example.com"
4. Versionsnummern-Falle
Versionsnummern wie 1.0 werden als Fließkommazahlen geparst:
# FALSCH
version: 1.0 # Wird zu 1 (Float)
# RICHTIG
version: "1.0" # String
YAML validieren
Validieren Sie Ihr YAML immer vor dem Deployment. Syntaxfehler in YAML können kryptische Anwendungsfehler verursachen. Unser YAML Validator prüft die Syntax sofort und hebt die genaue Zeile und Spalte jedes Fehlers hervor.
Für einen tieferen Einblick in die Unterschiede zwischen YAML und JSON siehe unseren YAML vs JSON Vergleich.
FAQ
Wie viele Leerzeichen sollte ich für YAML-Einrückung verwenden?
Zwei Leerzeichen ist die gebräuchlichste Konvention, verwendet von Kubernetes, Docker Compose, GitHub Actions und den meisten DevOps-Werkzeugen. Einige Projekte verwenden vier Leerzeichen. Die Schlüsselregel ist Konsistenz innerhalb einer Datei — mischen Sie niemals Einrückungsebenen.
Kann YAML Kommentare enthalten?
Ja, YAML unterstützt einzeilige Kommentare mit #. Es gibt keine mehrzeilige Kommentarsyntax. Kommentare werden beim Parsen entfernt und sind in der geladenen Datenstruktur nicht verfügbar.
Verwandte Ressourcen
- YAML Formatter — YAML-Dateien formatieren und verschönern
- YAML vs JSON — Wann welches Format verwenden
- YAML für Docker Compose — Docker-spezifische YAML-Muster