Weiter zum Inhalt

Was ist YAML? Grundlagen, Syntax und Anwendungsfälle

YAML ist ein einfaches, aber leistungsstarkes Format für Konfigurationen, Automatisierung und Datenserialisierung. Erfahre anhand realer Beispiele, wie es funktioniert!
Aktualisiert 31. Aug. 2026  · 14 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Im Laufe der Jahre habe ich mit unzähligen Konfigurationsdateien gearbeitet, und YAML ist mir wegen seiner Einfachheit und Lesbarkeit besonders aufgefallen. Ob Workflows in Kubernetes, Services in Docker oder die Strukturierung von API-Requests: YAML macht komplexe Konfigurationen beherrschbar. Die klare, einrückungsbasierte Struktur verzichtet auf den Ballast von Formaten wie XML und bleibt trotzdem flexibel.

In diesem Guide führe ich dich durch Syntax, Struktur, fortgeschrittene Features und Best Practices von YAML, damit du sicher damit arbeiten kannst. 

Was ist YAML?

YAML (Yet Another Markup Language / YAML Ain’t Markup Language) ist ein Datenserialisierungsformat, das Lesbarkeit und einfache Handhabung in den Vordergrund stellt. Während XML mit HTML-ähnlichen verschachtelten Tags arbeitet und JSON geschweifte Klammern und Anführungszeichen nutzt – ähnlich wie Python-Dictionaries –, ist YAML kompakter und verwendet Einrückungen zur Strukturierung. Das ist deutlich menschenfreundlicher.

YAML unterstützt verschiedene Datentypen, darunter Skalare (Strings, Zahlen, Booleans), Sequenzen (Listen) und Zuordnungen (Key-Value-Paare). Es wird häufig in Konfigurationsdateien, für Infrastrukturautomatisierung und Datenaustausch verwendet – insbesondere in Tools wie Kubernetes, Docker und Ansible.

Außerdem ist YAML ein Superset von JSON, das heißt: Gültige JSON-Dateien lassen sich als YAML parsen. YAML-Dateien haben typischerweise die Endung .yaml oder .yml.

Mehr über YAML findest du auch auf der Website.

YAML-Syntax und -Struktur

In diesem Abschnitt schauen wir uns die Grundprinzipien der YAML-Syntax an – inklusive Key-Value-Paaren, Listen, verschachtelten Daten und Kommentaren.

Grundlegende Syntaxregeln

Es gibt ein paar Basisregeln für YAML: 

  • Einrückungen mit Leerzeichen definieren die Struktur – Tabs vermeiden! 
  • Key-Value-Paare folgen dem Muster key: value, ähnlich wie in anderen Sprachen. 
  • Bindestriche am Zeilenanfang kennzeichnen Listen. 
  • Mit # beginnst du Kommentarzeilen.
# Hier ein YAML-Beispiel
name: John Doe
age: 30
skills:
  - Python
  - YAML

Key-Value-Paare

YAML stellt Daten als Key-Value-Paare dar, ähnlich wie Dictionaries in Python. So werden häufig Informationen für unterschiedliche Konfigurationsdateien und Einstellungen notiert. Strings oder Keys müssen nicht in Anführungszeichen gesetzt werden – schreibe einfach die benötigten Keys und Werte:

location: New York
country: USA
security-level: user

Listen in YAML

Listen werden mit Bindestrichen (-) dargestellt. Damit kannst du mehrere Objekte unter einem einzigen Key auflisten. In Markup-Editoren erscheinen sie oft visuell als Aufzählungspunkte.

fruits:
  - Apple
  - Banana
  - Cherry

Verschachtelte Daten

Verschachtelte Strukturen ermöglichen hierarchische Daten mittels Einrückungen. Denk daran wie an verschachtelte Dictionaries. Mit Einrückungen gibst du an, welche Keys Unterpunkte anderer Keys sind.

person:
  name: Alice
  details:
    age: 25
    city: London

Kommentare

Kommentare beginnen mit # und werden von YAML-Parsern ignoriert. Es handelt sich um einzeilige Kommentare.

# Das ist ein Kommentar
username: admin
password: secret

Erweiterte YAML-Features

YAML bietet leistungsstarke Funktionen wie mehrzeilige Strings, Datentypen sowie Anker und Aliasse, die Dokumente effizienter und strukturierter machen. In diesem Abschnitt schauen wir uns diese Möglichkeiten anhand praktischer Beispiele an.

Mehrzeilige Strings

YAML unterstützt mehrzeilige Strings mit | (wörtlicher Block) oder > (gefalteter Block). 

  • Der wörtliche Block | erzeugt für jeden Zeilenumbruch ein neues \n
  • Der gefaltete Block > erzeugt nur bei aufeinanderfolgenden Zeilenumbrüchen eine neue Zeile.
literal: |
  This is a
  multi-line string.

folded: >
  This is another
  multi-line string.

Am besten versteht man das am ausgegebenen Text.

  • Für den | (wörtlicher Block):
This is a
multi-line string.
  • Für den > (gefalteter Block):
This is another multi-line string.

Datentypen in YAML

YAML unterstützt verschiedene Datentypen, darunter Strings, Zahlen, Booleans und Null-Werte. Typen werden meist automatisch anhand des Formats erkannt, können aber auch explizit definiert werden.

Das folgende Beispiel zeigt die Verwendung grundlegender Datentypen in YAML:

string_implicit: Hello, YAML!  # Keine Anführungszeichen nötig, außer bei Bedarf
string_double_quoted: "Supports escape sequences like \n and \t"
string_single_quoted: 'Raw text, no escape sequences'

integer: 42  # Ganze Zahlen
float: 3.14  # Zahlen mit Dezimalstellen

boolean_true: true
boolean_false: false

null_value: null  # Null-Wert
null_tilde: ~  # Alternative Darstellung für null

YAML erlaubt bei Bedarf explizite Typdeklarationen mit !!type:

explicit_string: !!str 123  # Erzwingt, dass 123 ein String ist
explicit_integer: !!int "42"  # Erzwingt, dass "42" ein Integer ist
explicit_float: !!float "3.14"  # Erzwingt, dass "3.14" ein Float ist

Da YAML häufig für strukturierte Daten genutzt wird, unterstützt es:

  • Listen (Sequenzen):
fruits:
  - Apple
  - Banana
  - Cherry
  • Dictionaries (Mappings):
person:
  name: Alice
  age: 30
  is_student: false

Anker und Aliasse

Mit Ankern (&) kannst du wiederverwendbare Werte definieren und sie später mit Aliasen (*) referenzieren. So reduzierst du Redundanz in Konfigurationsdateien – sie werden übersichtlicher und leichter zu pflegen.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  host: example.com
  retries: *default_settings  # Verwendet den Wert von retries aus defaults erneut

Mit der Syntax <<: kannst du Key-Value-Paare aus einem Anker in ein anderes Mapping mergen. Existiert ein Key in beiden, überschreibt der neue Wert den ursprünglichen.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  <<: *default_settings  # Merged alle Key-Value-Paare aus default_settings
  host: example.com  # Dieser Key wird zu den gemergten Daten hinzugefügt

So sieht die final aufgelöste Struktur aus:

server1:
  retries: 3
  timeout: 30
  host: example.com

Anker und Aliasse sind besonders in großen Konfigurationsdateien nützlich, in denen sich Werte sonst häufig wiederholen würden. Sie helfen, YAML-Dateien DRY (Don't Repeat Yourself) zu halten und Updates zu vereinfachen.

Häufige Anwendungsfälle für YAML

YAML ist in Softwareentwicklung, Infrastrukturautomatisierung und API-Management weit verbreitet. Dank der gut lesbaren Syntax ist es ein bevorzugtes Format für Konfigurationen, Datenserialisierung und Infrastructure as Code (IaC). Schauen wir uns die häufigsten Einsatzszenarien an.

Konfigurationsdateien

YAML wird breit für Konfigurationen in Anwendungen wie Docker Compose, Kubernetes und CI/CD-Pipelines eingesetzt. Durch die leichte Verständlichkeit können auch andere schnell Docker-YAML-Setups lesen und nachvollziehen, was passiert.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80

Die gute Lesbarkeit von YAML sowie Anker und Aliasse reduzieren Wiederholungen – damit ist es oft wartungsärmer als JSON oder XML.

Mehr über YAML und seine Nutzung in Docker erfährst du in diesem Docker-Kurs für Fortgeschrittene.

Datenserialisierung und -transfer

YAML wird genutzt, um Daten für APIs und Konfigurationsmanagement-Tools zu serialisieren – komplexe Datenstrukturen werden in ein menschenlesbares Format überführt, das Maschinen leicht parsen können. 

Beispiel für einen API-Request-Body im YAML-Format:

user:
  id: 123
  name: "John Doe"
  email: "johndoe@example.com"
  active: true

Die einrückungsbasierte Struktur von YAML spart überflüssige Syntax – dadurch ist es im Vergleich zu JSON leichtgewichtig, gut lesbar und einfach anzupassen.

Infrastructure as Code (IaC)

Konfigurationsmanagement-Tools wie Ansible und Kubernetes nutzen YAML, um Systemzustände zu definieren, Prozesse zu automatisieren und Konsistenz über Umgebungen hinweg sicherzustellen.

  • In Ansible werden mit YAML Playbooks geschrieben, die Systemzustände, Tasks und Abhängigkeiten definieren – so wird Infrastruktur konsistent konfiguriert. 
  • Kubernetes verwendet YAML-Manifeste, um Ressourcen wie Pods, Services und Deployments zu definieren – das ermöglicht die automatisierte Orchestrierung containerisierter Anwendungen.

Hier ein Beispiel für eine Kubernetes-Pod-Konfiguration:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: app-container
      image: my-app:latest
      ports:
        - containerPort: 8080

Mehr darüber, wie YAML in Kubernetes eingesetzt wird, erfährst du im Kurs Introduction to Kubernetes.

API-Dokumentation

API-Spezifikationen wie OpenAPI und Swagger nutzen YAML, um Endpunkte und Datenstrukturen leicht lesbar zu definieren. YAML beschreibt API-Methoden, Request-Parameter, Response-Formate und Authentifizierungsverfahren.

Hier ein Beispiel für eine OpenAPI-Spezifikation in YAML:

openapi: 3.0.0
info:
  title: User API
  version: "1.0"
paths:
  /users:
    get:
      summary: Retrieve a list of users
      responses:
        "200":
          description: Successful response

OpenAPI-Spezifikationen dokumentieren beispielsweise RESTful APIs. So entsteht eine klare Vorlage zur Generierung von Client-SDKs, interaktiver API-Dokumentation und automatisierten Tests. Das strukturierte Format sorgt für Konsistenz in der API-Implementierung.

Arbeiten mit YAML-Dateien

YAML wird häufig für Konfigurationen, Automatisierung und Datenserialisierung genutzt. Da es auf Einrückungen setzt, ist korrektes Format entscheidend. So liest, schreibst, validierst und bearbeitest du YAML effizient.

YAML in Python lesen und schreiben

Die Python-Bibliothek PyYAML kann YAML parsen und generieren.

Angenommen, du hast folgende YAML-Konfigurationsdatei:

database:
  host: localhost
  port: 5432
  user: admin
  password: secret

So kannst du in Python mit deiner Konfiguration arbeiten:

import yaml

# Load YAML data
with open("config.yaml", "r") as file:
    data = yaml.safe_load(file)  # safe_load verhindert die Ausführung beliebigen Codes

# Daten ändern (optional)
data["database"]["user"] = "new_user"

# YAML schreiben
with open("output.yaml", "w") as file:
    yaml.dump(data, file, default_flow_style=False)

Wenn du mit JSON-Daten in Python arbeiten möchtest, schau dir den umfassenden Python-JSON-Tutorial an.

YAML-Dateien validieren

Um korrekte Strukturen sicherzustellen, kannst du Tools nutzen, die Tabs statt Spaces aufspüren oder Probleme wie doppelte Zeichen, Syntaxfehler und nachgestellte Leerzeichen melden.

Beliebte YAML-Validatoren sind:

YAML bearbeiten

Du kannst YAML in jedem Texteditor schreiben und bearbeiten – Linting-Tools und Syntax-Highlighting verbessern jedoch die Lesbarkeit.

Meine Favoriten:

  • VS Code (mit YAML-Plugins)
  • PyCharm (eingebaute Unterstützung)
  • Sublime Text (mit YAML-Syntaxhervorhebung)

Häufige Fehler in YAML vermeiden

Trotz seiner Einfachheit können bei YAML schnell Fehler und Tippser passieren. Dieser Abschnitt bespricht typische Stolperfallen und gibt Best Practices für saubere, korrekte Dateien. Darum empfehle ich auch Linter oder smarte Editoren!

Tabs und Spaces mischen

YAML setzt für Einrückungen auf Leerzeichen – niemals Spaces und Tabs mischen. Tabs bringen dein YAML zum Brechen. Das ist bewusst so: Unterschiedliche Systeme interpretieren Tabs unterschiedlich, daher sind Spaces die sichere Wahl.

Falsche Einrückungen

Achte auf konsistente Einrückungen, um Parse-Fehler zu vermeiden. Da Einrückungen in YAML die einzige Methode zur Hierarchiekennzeichnung sind, führen Fehler hier schnell zu Problemen. Ein key: value-Paar ist sonst schnell an der falschen Stelle – behalte also die Einrückungen im Blick!

Anführungszeichen bei Sonderzeichen vergessen

Setze Anführungszeichen bei Strings mit Sonderzeichen oder Leerzeichen. Dinge wie Backslashes, Kommas, Ausrufezeichen usw. brauchen Anführungszeichen, um als String gelesen zu werden.

path: "/home/user/documents"
message: "Hello, World!"

Mit solider Validierung, strukturiertem Editieren und Python’s PyYAML arbeitest du effizient mit YAML-Dateien und vermeidest typische Fallstricke.

Fazit

YAML ist ein einfaches, aber mächtiges Format – verbreitet in Konfiguration, Datenserialisierung und Infrastrukturautomatisierung. Wenn du Syntax, Struktur und Best Practices beherrschst, kannst du YAML in vielen Anwendungen effizient einsetzen.

Wenn du YAML in realen Szenarien anwenden möchtest:

Werde Dateningenieur

Baue Python-Kenntnisse auf, um ein professioneller Dateningenieur zu werden.
Jetzt Kostenlos Loslegen

FAQs

Ist YAML universell?

Solange die Datenquelle oder das Ziel YAML lesen kann, ist es eine sinnvolle und nützliche Methode zur Serialisierung und zum Transport von Daten. Stelle sicher, dass du Daten an ein Ziel sendest, das YAML verarbeiten kann.

Ist YAML sicher? Können YAML-Dateien Sicherheitsrisiken verursachen?

YAML selbst ist nur ein Datenformat, aber Sicherheitsrisiken entstehen beim Parsen nicht vertrauenswürdiger YAML-Dateien. Die Standardmethode yaml.load() in Python’s PyYAML kann beliebigen in YAML eingebetteten Code ausführen – das ist riskant. Verwende stattdessen immer yaml.safe_load(), um die ungewollte Ausführung bösartigen Codes zu verhindern. Achte außerdem bei der Nutzung von YAML in Anwendungen auf strikte Schemavalidierung, um Sicherheitslücken zu vermeiden.

Unterstützt YAML Umgebungsvariablen?

Ja! YAML verarbeitet Umgebungsvariablen nicht direkt, aber viele Tools (etwa Docker Compose und Kubernetes) erlauben Referenzen auf Umgebungsvariablen in YAML-Dateien.

Wie geht man in YAML mit Kommentaren um?

YAML unterstützt einzeilige Kommentare mit dem Symbol #, aber keine mehrzeiligen Kommentare. Wenn du mehrzeilige Kommentare brauchst, ist ein gängiger Workaround ein Dummy-Key wie _comment. Das ist allerdings nur eine Konvention und wird von YAML-Parsern nicht ignoriert, es sei denn, deine Anwendung filtert ihn explizit heraus.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Ich bin Datenwissenschaftler mit Erfahrung in räumlicher Analyse, maschinellem Lernen und Datenpipelines. Ich habe mit GCP, Hadoop, Hive, Snowflake, Airflow und anderen Data Science/Engineering-Prozessen gearbeitet.

Themen
Datentechnik

Vertiefe dein Wissen zu Data Engineering mit diesen Kursen!

Lernpfad

Dateningenieur in Python

40 Std.
Erwerbe gefragte Fähigkeiten, um Daten effizient zu erfassen, zu bereinigen, zu verwalten und Pipelines zu planen und zu überwachen, und hebe dich damit im Bereich Data Engineering ab.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow
Verwandt

Tutorial

Python JSON-Daten: Ein Leitfaden mit Beispielen

Lerne, wie man mit JSON in Python arbeitet, einschließlich Serialisierung, Deserialisierung, Formatierung, Leistungsoptimierung, Umgang mit APIs und Verständnis der Einschränkungen und Alternativen von JSON.
Moez Ali's photo

Moez Ali

6 Min.

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

5 Min.

Tutorial

Python Datenstrukturen Tutorial

Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Sejal Jaiswal's photo

Sejal Jaiswal

24 Min.

Tutorial

Python-Lambda-Funktionen: Ein Leitfaden für Anfänger

Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Mark Pedigo's photo

Mark Pedigo

10 Min.

Tutorial

Python-Tutorial zum Verknüpfen von Zeichenfolgen

Lerne verschiedene Methoden zum Verknüpfen von Zeichenfolgen in Python kennen, mit Beispielen, die jede Technik zeigen.
DataCamp Team's photo

DataCamp Team

5 Min.

Tutorial

Wie man Listen in Python aufteilt: Einfache Beispiele und fortgeschrittene Methoden

Lerne, wie du Python-Listen mit Techniken wie Slicing, List Comprehensions und itertools aufteilen kannst. Finde heraus, wann du welche Methode für die beste Datenverarbeitung nutzen solltest.
Allan Ouko's photo

Allan Ouko

11 Min.

Mehr AnzeigenMehr Anzeigen