alltools.one
YAML
2025-07-06
8 min
alltools.one Team
YAMLSyntaxConfigurationDevOps

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

Published on 2025-07-06
YAML Syntax Tutorial: A Practical Introduction | alltools.one