YAML
Kurz: Ein menschenlesbares Datenformat für Konfigurationsdateien, bei dem die Struktur durch Einrückung entsteht.
Genauer: YAML (das Akronym wird meist als „YAML Ain’t Markup Language“ erklärt) wird für Konfigurationen von Docker Compose, Kubernetes, GitHub Actions und vielen anderen Werkzeugen genutzt. Es kann dieselben Daten ausdrücken wie JSON, ist aber für Menschen angenehmer zu lesen und zu schreiben, erlaubt Kommentare und kommt mit weniger Klammern aus.
Im Detail
Grundbausteine
# Kommentar
name: Emzett
aktiv: true
version: 1.5
tags:
- wiki
- lernen
datenbank:
host: localhost
port: 5432Schlüssel und Wert stehen mit Doppelpunkt und Leerzeichen dahinter. Listen beginnen mit - . Verschachtelte Strukturen entstehen durch Einrückung mit Leerzeichen, Tabulatoren sind nicht erlaubt.
Typen
YAML erkennt Zahlen, Wahrheitswerte (true, false), null und Text selbst. Das ist bequem, aber eine Fehlerquelle: In älteren YAML-Fassungen wurde no als false gelesen (das „Norwegen-Problem“ bei Ländercodes), und 1.10 wird zur Zahl 1,1. Im Zweifel Texte in Anführungszeichen setzen: land: "no".
Mehrzeilige Texte
beschreibung: |
Erste Zeile
Zweite Zeile (Zeilenumbrüche bleiben)
kurz: >
Dieser Text wird
zu einer Zeile gefaltet.Anker und Wiederverwendung
Mit &name markiert man einen Block, mit *name verwendet man ihn erneut, um Wiederholungen zu vermeiden. Das spart Schreibarbeit, macht Dateien aber schwerer lesbar, wenn man es übertreibt.
Fehler vermeiden
Die häufigsten Fehler sind falsche Einrückung (ein Leerzeichen zu viel oder zu wenig verändert die Struktur) und vergessene Anführungszeichen bei Sonderzeichen wie : oder # im Text. Ein Prüfwerkzeug („Linter“) oder der Editor mit Einrückungslinien hilft. Beim Umwandeln zwischen YAML, JSON und CSV gilt: JSON kennt keine Kommentare, die gehen dabei verloren.
Sicherheit
Manche YAML-Bibliotheken können beim Laden beliebige Objekte erzeugen und damit Code ausführen. Daten aus unbekannter Quelle immer mit dem „sicheren“ Lader einlesen (safe_load in Python).