Direkt zum Inhalt

Was ist YAML? Die Grundlagen, die Syntax und die Anwendungsfälle verstehen

YAML ist ein einfaches, aber leistungsstarkes Format für Konfigurationen, Automatisierung und Datenserialisierung. Lerne anhand von Beispielen aus der Praxis, wie es funktioniert!
Aktualisierte 17. Feb. 2025  · 14 Min. Lesezeit

Im Laufe der Jahre habe ich mit unzähligen Konfigurationsdateien gearbeitet, und YAML hat sich durch seine Einfachheit und Lesbarkeit ausgezeichnet. Ob du Workflows in Kubernetes einrichtest, Dienste in Docker definierst oder API-Anfragen strukturierst, YAML macht komplexe Konfigurationen überschaubarer. Die saubere, auf Einrückungen basierende Struktur vermeidet das Durcheinander von Formaten wie XML und bleibt gleichzeitig flexibel.

In diesem Leitfaden führe ich dich durch die Syntax, die Struktur, die erweiterten Funktionen und die besten Praktiken von YAML, damit du sicher damit arbeiten kannst. 

Was ist YAML?

YAML (Yet Another Markup Language / YAML Ain't Markup Language) ist ein Format zur Serialisierung von Daten, bei dem Lesbarkeit und Benutzerfreundlichkeit im Vordergrund stehen. Während XML eine Mischung aus HTML-ähnlichen verschachtelten Tags und JSON geschweifte Klammern und Anführungszeichen verwendet, ähnlich wie Python-Wörterbücher, ist YAML prägnanter und verwendet Einrückungen, um die Struktur zu definieren, was es menschenfreundlicher macht.

YAML unterstützt verschiedene Datentypen, darunter Skalare (Strings, Zahlen, Booleans), Sequenzen (Listen) und Mappings (Schlüssel-Wert-Paare). Es wird häufig in Konfigurationsdateien, bei der Automatisierung von Infrastrukturen und beim Datenaustausch verwendet, insbesondere in Tools wie Kubernetes, Docker und Ansible.

Außerdem ist YAML eine Obermenge von JSON, was bedeutet, dass gültige JSON-Dateien als YAML geparst werden können. YAML-Dateien haben normalerweise die Erweiterung .yaml oder .yml.

Mehr über YAML kannst du auch auf der YAML-Website erfahren!

YAML Syntax und Struktur

In diesem Abschnitt lernst du die grundlegenden Prinzipien der YAML-Syntax kennen, darunter Schlüssel-Wert-Paare, Listen, verschachtelte Daten und Kommentare.

Grundlegende Syntaxregeln

Es gibt ein paar grundlegende syntaktische Regeln für YAML: 

  • Der Einzug von Leerzeichen zeigt die Struktur an, also vermeide diese Tabs! 
  • Schlüssel-Wert-Paare folgen einer key: value Struktur, ähnlich wie in anderen Sprachen. 
  • Die Verwendung von Bindestrichen am Anfang von Zeilen kennzeichnet eine Liste. 
  • Wenn du # verwendest, werden Kommentarzeilen erstellt.
# Here is an example of YAML
name: John Doe
age: 30
skills:
  - Python
  - YAML

Schlüssel-Werte-Paare

YAML stellt Daten als Schlüssel-Wert-Paare dar, ähnlich wie die Wörterbücher in Python. Das sind oft Informationen, die an verschiedene Konfigurationsdateien und Einstellungen weitergegeben werden. Es ist nicht nötig, Zeichenketten oder Schlüssel mit Anführungszeichen zu kennzeichnen; schreibe einfach die benötigten Schlüssel und Werte:

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

Listen in YAML

Listen werden mit Bindestrichen (-) dargestellt. So kannst du mehrere Objekte unter einem einzigen Schlüssel auflisten. Beim Lesen durch Markup-Editoren wird dies oft visuell mit Aufzählungszeichen dargestellt.

fruits:
  - Apple
  - Banana
  - Cherry

Verschachtelte Daten

Geschachtelte Strukturen ermöglichen eine hierarchische Datendarstellung durch Einrückung. Stell dir diese wie verschachtelte Wörterbücher vor. Mit der Einrückung kennzeichnest du, welche Tasten Teilmengen von anderen sind.

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

Kommentare

Kommentare beginnen mit # und werden von YAML-Parsern ignoriert. Diese Kommentare sind einzeilige Kommentare.

# This is a comment
username: admin
password: secret

Erweiterte YAML-Funktionen

YAML enthält leistungsstarke Funktionen wie mehrzeilige Strings, Datentypen und Anker, die Dokumente effizienter und strukturierter machen. In diesem Abschnitt werden wir diese Möglichkeiten anhand praktischer Beispiele erkunden.

Mehrzeilige Zeichenfolgen

YAML unterstützt mehrzeilige Strings mit | (literaler Block) oder > (gefalteter Block). 

  • | wird bei jedem Zeilenumbruch eine neue Zeile \n erstellt. 
  • > Der gefaltete Block macht nur bei aufeinanderfolgenden Zeilenumbrüchen eine neue Zeile.
literal: |
  This is a
  multi-line string.

folded: >
  This is another
  multi-line string.

Die obigen Ausführungen lassen sich besser verstehen, wenn du dir die Ausgabe ansiehst.

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

Datentypen in YAML

YAML unterstützt verschiedene Datentypen, darunter Strings, Zahlen, Boolesche Werte und Nullwerte. Es erkennt die Typen automatisch anhand der Formatierung, erlaubt aber auch explizite Typdefinitionen.

Das folgende Beispiel zeigt die Verwendung von Basisdatentypen in YAML:

string_implicit: Hello, YAML!  # No quotes needed unless necessary
string_double_quoted: "Supports escape sequences like \n and \t"
string_single_quoted: 'Raw text, no escape sequences'

integer: 42  # Whole numbers
float: 3.14  # Numbers with decimals

boolean_true: true
boolean_false: false

null_value: null  # Null value
null_tilde: ~  # Another way to represent null

YAML erlaubt bei Bedarf explizite Typendeklarationen mit !!type:

explicit_string: !!str 123  # Forces 123 to be a string
explicit_integer: !!int "42"  # Forces "42" to be an integer
explicit_float: !!float "3.14"  # Forces "3.14" to be a float

Da YAML oft für strukturierte Daten verwendet wird, unterstützt es:

  • Listen (Sequenzen):
fruits:
  - Apple
  - Banana
  - Cherry
  • Wörterbücher (Mappings):
person:
  name: Alice
  age: 30
  is_student: false

Anker und Aliasnamen

In YAML kannst du wiederverwendbare Werte mit Hilfe von Ankern (&) definieren und sie später mit Hilfe von Aliases (*) referenzieren. Dadurch wird die Redundanz in den Konfigurationsdateien reduziert und sie werden übersichtlicher und leichter zu pflegen.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  host: example.com
  retries: *default_settings  # Reuses the retries value from defaults

Die <<: Syntax ermöglicht das Zusammenführen von Schlüssel-Wert-Paaren aus einem Anker in ein anderes Mapping. Wenn ein Schlüssel in beiden vorhanden ist, überschreibt der neue Wert den ursprünglichen.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  <<: *default_settings  # Merges all key-value pairs from default_settings
  host: example.com  # This key is added to the merged data

Dies ist die endgültige, aufgelöste Struktur:

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

Anker und Aliase sind besonders nützlich in großen Konfigurationsdateien, in denen es ineffizient wäre, Werte manuell zu wiederholen. Sie helfen dabei, YAML-Dateien DRY (Don't Repeat Yourself) zu halten und machen Updates einfacher.

Häufige Anwendungsfälle für YAML

YAML wird häufig in der Softwareentwicklung, der Infrastrukturautomatisierung und der API-Verwaltung eingesetzt. Seine menschenlesbare Syntax macht es zu einem bevorzugten Format für Konfigurationsdateien, Datenserialisierung und Infrastructure as Code (IaC). Schauen wir uns die häufigsten Anwendungen an.

Konfigurationsdateien

YAML wird häufig für die Konfiguration in Anwendungenwie Docker Compose, Kubernetes und CI/CD-Pipelinesverwendet. Die einfache Verständlichkeit macht es für jeden leicht, die Docker YAML-Setup-Dateien in die Hand zu nehmen und zu verstehen, was passiert.

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

Die Lesbarkeit von YAML und die Unterstützung von Ankern und Aliasen tragen dazu bei, Wiederholungen zu vermeiden, was es wartungsfreundlicher macht als JSON oder XML.

In diesem Docker-Kurs für Fortgeschrittene erfährst du mehr über YAML und seine Verwendung in Docker .

Serialisierung und Übertragung von Daten

YAML wird verwendet, um Daten für APIs und Konfigurationsmanagement-Tools zu serialisieren, indem komplexe Datenstrukturen in ein für Menschen lesbares Format umgewandelt werden, das von Maschinen leicht geparst werden kann. 

Zum Beispiel ein API-Anfragetext, der in YAML formatiert ist:

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

Die auf Einrückungen basierende Struktur von YAML macht unnötige Syntax überflüssig und macht es im Vergleich zu JSON leicht, lesbar und einfach zu ändern.

Infrastruktur als Code (IaC)

Konfigurationsmanagement-Tools wie Ansible und Kubernetes nutzen YAML, um Systemzustände zu definieren, Prozesse zu automatisieren und die Konsistenz zwischen verschiedenen Umgebungen sicherzustellen.

  • In Ansible wird YAML verwendet, um Playbooks zu schreiben, die Systemzustände, Aufgaben und Abhängigkeiten definieren und sicherstellen, dass die Infrastrukturkomponenten einheitlich konfiguriert sind. 
  • Kubernetes nutzt YAML-Manifeste, um Ressourcen wie Pods, Services und Deployments zu definieren und ermöglicht so eine automatisierte Orchestrierung von containerisierten Anwendungen.

Hier ist 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

Erfahre mehr darüber, wie YAML in Kubernetes verwendet wird, in diesem Kurs Einführung in Kubernetes .

API-Dokumentation

API-Spezifikationen wie OpenAPI und Swagger verwenden YAML, um Endpunkte und Datenstrukturen in einer leicht lesbaren Form zu definieren. YAML wird verwendet, um API-Methoden, Anfrageparameter, Antwortformate und Authentifizierungsmethoden zu beschreiben.

Hier ist 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

Die OpenAPI-Spezifikationen verwenden zum Beispiel YAML, um RESTful-APIs zu dokumentieren. So können sie einen klaren Plan für die Erstellung von Client-SDKs, interaktiver API-Dokumentation und automatisierten Tests erstellen. Dieses strukturierte Format sorgt für Konsistenz zwischen den API-Implementierungen.

Arbeiten mit YAML-Dateien

YAML wird häufig für Konfigurationsdateien, Automatisierung und Datenserialisierung verwendet, aber da es auf Einrückung beruht, ist die richtige Formatierung entscheidend. Hier erfährst du, wie du YAML effektiv lesen, schreiben, validieren und bearbeiten kannst.

Lesen und Schreiben von YAML in Python

Die PyYAML Bibliothek von Python kann YAML parsen und generieren.

Stell dir vor, du hast die folgende Konfigurations-YAML-Datei:

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

Hier erfährst du, wie du mit deiner Konfigurationsdatei in Python arbeiten kannst:

import yaml

# Load YAML data
with open("config.yaml", "r") as file:
    data = yaml.safe_load(file)  # safe_load prevents arbitrary code execution

# Modify data (optional)
data["database"]["user"] = "new_user"

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

Wenn du dich für die Arbeit mit JSON-Daten in Python interessierst, schau dir das umfassende Python JSON-Tutorialan.

Validierung von YAML-Dateien

Um die korrekte Struktur zu gewährleisten, kannst du Tools verwenden, die auf Tabulatoren anstelle von Leerzeichen oder seltsame Probleme wie wiederholte Zeichen, Syntaxprobleme und Leerzeichen am Ende der Zeile prüfen.

Dies sind einige beliebte YAML-Validatoren:

YAML bearbeiten

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

Einige meiner Lieblingsredakteure:

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

Häufige Fehler, die man in YAML vermeiden sollte

Trotz seiner Einfachheit kann es bei der Arbeit mit YAML leicht zu Problemen und Tippfehlern kommen. In diesem Abschnitt werden diese Fehler besprochen und Best Practices zum Schreiben sauberer und korrekter Dateien vorgestellt. Das ist auch der Grund, warum ich dir empfehle, einen Linter oder Texteditor zu benutzen!

Tabulatoren und Leerzeichen mischen

YAML verwendet Leerzeichen für die Einrückung - mische niemals Leerzeichen und Tabulatoren. Tabulatoren machen dein YAML-Skript einfach kaputt. Das ist eine bewusste Entscheidung, denn verschiedene Systeme lesen Tabulatoren unterschiedlich, und um die Auswirkungen zu minimieren, werden Leerzeichen bevorzugt verwendet.

Falsche Einrückung

Achte auf eine einheitliche Einrückung, um Parsing-Fehler zu vermeiden. Da Einrückungen die einzige Methode von YAML sind, um Hierarchien zu kennzeichnen, kann ein falsches Parsing zu Problemen in deinem Code führen. Du kannst ein key: value Paar leicht an der falschen Stelle verstauen, also achte einfach auf die Einkerbungen!

Vergessene Anführungszeichen für Sonderzeichen

Verwende Anführungszeichen für Zeichenfolgen, die Sonderzeichen oder Leerzeichen enthalten. Dinge wie Backslashes, Kommas, Ausrufezeichen und so weiter müssen in Anführungszeichen gesetzt werden, damit sie als Zeichenketten gelesen werden können.

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

Mit der richtigen Validierung, der strukturierten Bearbeitung und Python's PyYAML kannst du effizient mit YAML-Dateien arbeiten und häufige Fallstricke vermeiden.

Fazit

YAML ist ein leistungsfähiges und dennoch einfaches Format, das in der Konfiguration, Datenserialisierung und Infrastrukturautomatisierung weit verbreitet ist. Wenn du die Syntax, die Struktur und die Best Practices von YAML verstehst, kannst du in verschiedenen Anwendungen effizient damit arbeiten.

Wenn du daran interessiert bist, YAML in realen Szenarien anzuwenden:

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 praktikable 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 bergen?

YAML selbst ist nur ein Datenformat, aber beim Parsen von nicht vertrauenswürdigen YAML-Dateien entstehen Sicherheitsrisiken. Die Standardmethode yaml.load() in Python PyYAML kann beliebigen Code ausführen, der in YAML eingebettet ist, und ist daher riskant. Verwende stattdessen immer yaml.safe_load(), um die unbeabsichtigte Ausführung von bösartigem Code zu verhindern. Auch bei der Verwendung von YAML in Anwendungen solltest du auf eine strenge Schema-Validierung achten, um Sicherheitslücken zu vermeiden.

Kann YAML Umgebungsvariablen unterstützen?

Ja! YAML selbst verarbeitet zwar keine Umgebungsvariablen, aber viele Tools (wie Docker Compose und Kubernetes) erlauben es, Umgebungsvariablen in YAML-Dateien zu referenzieren.

Wie handhabt ihr Kommentare in YAML?

YAML unterstützt einzeilige Kommentare mit dem Symbol #, aber keine mehrzeiligen Kommentare. Wenn du mehrzeilige Kommentare benötigst, ist eine gängige Lösung, eine Dummy-Taste wie _comment zu verwenden. Dies ist jedoch nur eine Konvention und wird von YAML-Parsern nicht ignoriert, es sei denn, deine Anwendung filtert es ausdrücklich 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

Lerne mehr über Data Engineering mit diesen Kursen!

Lernpfad

Dateningenieur

40Std. hr
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.
Siehe DetailsRight Arrow
Kurs starten
Zertifizierung verfügbar

Kurs

CI/CD für maschinelles Lernen

5 hr
4.2K
Verbessere deine Machine Learning-Entwicklung mit CI/CD mithilfe von GitHub Actions und Data Version Control
Zertifizierung verfügbar

Kurs

DevOps-Konzepte

4 hr
7.2K
In dieser Einführung in DevOps beherrschst du die DevOps-Grundlagen und lernst die wichtigsten Konzepte, Tools und Techniken zur Verbesserung der Produktivität kennen.
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Mehr anzeigenMehr anzeigen