YAML-Grundlagen

YAML ist ein Format für Konfigurationsdateien, etwa für Docker Compose, Kubernetes, GitHub Actions, Ansible oder Home Assistant. Die Struktur ergibt sich allein aus der Einrückung.

Stand: Oktober 2026

Für ein PDF im Druckfenster „Als PDF speichern“ wählen.

Grundbausteine

SchreibweiseBedeutung
name: WertEintrag mit Name und Wert – nach dem Doppelpunkt kommt ein Leerzeichen
server:Darunter eingerückte Einträge (z. B. „ port: 80“) gehören zu „server“
- einsListeneintrag: jeder Eintrag steht in einer eigenen Zeile und beginnt mit „- “
[eins, zwei]Liste in einer Zeile
{ a: 1, b: 2 }Einträge in einer Zeile
# KommentarWird ignoriert; braucht davor ein Leerzeichen, wenn er nach einem Wert steht
---Beginn eines weiteren Dokuments in derselben Datei

Werte und ihre Typen

BeispielWird gelesen als
port: 8080Zahl
preis: 1.5Kommazahl (mit Punkt)
aktiv: true / falseWahr oder falsch
leer: ~ oder leer:Kein Wert (null)
name: Anna BergerText, auch ohne Anführungszeichen
plz: "01010"Text – Anführungszeichen erzwingen Text
text: 'it''s'Einfache Anführungszeichen: kein \n, ' wird verdoppelt
text: "Zeile\nZeile"Doppelte Anführungszeichen: \n, \t und \" funktionieren

Mehrzeiliger Text

SchreibweiseErgebnis
skript: |Zeilenumbrüche bleiben erhalten – ideal für Befehle und Skripte
text: >Zeilen werden zu einem Absatz zusammengefügt, Leerzeilen trennen Absätze
|- oder >-Ohne Zeilenumbruch am Ende
|+ oder >+Alle Leerzeilen am Ende bleiben erhalten

Wiederverwenden mit Anker und Verweis

SchreibweiseBedeutung
basis: &standardAnker: merkt sich den Wert unter dem Namen „standard“
kopie: *standardVerweis: setzt denselben Wert noch einmal ein
<<: *standardÜbernimmt alle Einträge des Ankers; eigene Einträge haben Vorrang

Typische Fallen

GeschriebenProblemBesser
land: NOÄltere Programme lesen yes, no, on, off als wahr/falschland: "NO"
python: 3.10Wird zur Zahl 3.1python: "3.10"
rechte: 0755Ältere Programme lesen eine Oktalzahl (493)rechte: "0755"
ports: 22:22Ältere Programme rechnen in Minuten (1342)ports: "22:22"
image:nginxOhne Leerzeichen kein Eintrag, sondern Textimage: nginx
titel: Achtung: heiß„: “ mitten im Wert ist nicht erlaubttitel: "Achtung: heiß"
Tabulator vorneZum Einrücken sind nur Leerzeichen erlaubtLeerzeichen
name doppeltMeist gilt stillschweigend der letzte WertJeden Namen einmal

YAML und JSON

MerkmalYAMLJSON
KommentareJa, mit #Nein
StrukturDurch EinrückungDurch Klammern
AnführungszeichenMeist nicht nötigBei Text und Namen immer
Mehrzeiliger TextMit | und >Nur mit \n
ZusammenhangJedes JSON ist auch gültiges YAML–

Gut zu wissen

  • Rücke immer gleich weit ein, am besten mit 2 Leerzeichen pro Ebene. Viele Editoren zeigen Leerzeichen und Tabulatoren auf Wunsch an.
  • Versionsnummern, Postleitzahlen, Uhrzeiten, Ports und Ländercodes setzt du am sichersten in Anführungszeichen.
  • Passwörter und Tokens gehören nicht direkt in die Datei, sondern in Umgebungsvariablen wie ${DB_PASSWORT} oder eine .env-Datei, die nicht ins Git-Repository kommt.
  • Docker Compose, Kubernetes und GitHub Actions lesen YAML 1.2. Ansible und Home Assistant nutzen Python-Bibliotheken, die teils noch YAML 1.1 lesen – dort sind die Fallen oben besonders wichtig.

Sorgfältig zusammengestellt, aber ohne Gewähr. Mehr dazu in den Nutzungshinweisen. Fehlt etwas oder ist dir ein Fehler aufgefallen? Wir freuen uns über dein Feedback.

Passende Werkzeuge

Weitere Spickzettel