YAML-Parser
YAML (YAML Ain't Markup Language) ist ein menschenlesbares Daten-Serialisierungsformat, das für Konfigurationsdateien beliebt ist. Dieses Tool parst YAML mit vollständiger Unterstützung der 1.2-Spezifikation einschließlich Ankern, Aliases und Multi-Dokument-Streams und zeigt das Ergebnis in einer interaktiven Baumansicht an.
Spezifikationen
Haeufige Anwendungsfaelle
- Kubernetes-Manifeste parsen und validieren (Deployments, Services, ConfigMaps)
- Docker Compose- und docker-compose.yml-Dateien lesen
- GitHub Actions-, GitLab CI- oder CircleCI-Workflows debuggen
- Ansible-Playbooks für programmatische Verarbeitung in JSON konvertieren
- Helm-Chart-Values-Dateien validieren
Funktionen
- Vollständige Unterstützung der YAML-1.2-Spezifikation
- Anker (&) und Aliases (*) für wiederverwendbare Inhalte verarbeiten
- Multi-Dokument-Streams parsen (---Trennzeichen)
- In JSON, TOML oder XML konvertieren
- Syntaxvalidierung mit zeilenspezifischen Fehlermeldungen
- Interaktive Baumansicht für verschachtelte Strukturen
Beispiele
Kubernetes Deployment
Ausprobieren →Ein Kubernetes-Deployment-Manifest, das einen replizierten nginx-Pod definiert.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginxDocker Compose
Ausprobieren →Eine Docker-Compose-Datei, die Web- und Datenbankdienste definiert.
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: secretTipps
- YAML ist einrückungsabhängig. Verwenden Sie Leerzeichen, keine Tabs.
- Strings erfordern keine Anführungszeichen, es sei denn, sie enthalten Sonderzeichen.
- Verwenden Sie Anker (&name) und Aliases (*name), um Wiederholungen zu vermeiden.
- Mehrzeilige Strings können | (literal) oder > (gefaltet) Block-Skalare verwenden.
Verstaendnis YAML-Parser
YAML (YAML Ain't Markup Language) ist ein menschenlesbares Daten-Serialisierungsformat, das in DevOps, Cloud-Infrastruktur und Anwendungskonfiguration weit verbreitet ist. Seine einrückungsbasierte Syntax eliminiert das visuelle Rauschen von Klammern und geschwungenen Klammern und macht es zum bevorzugten Format für Infrastructure-as-Code-Tools, CI/CD-Pipelines und Container-Orchestrierung.
Die Kernstärke von YAML ist die Lesbarkeit. Ein Kubernetes-Deployment-Manifest, ein GitHub-Actions-Workflow oder eine Docker-Compose-Datei in YAML ist auf einen Blick verständlich. Das Format unterstützt Skalare (Strings, Zahlen, Booleans, null, Daten), Sequenzen (Arrays) und Mappings (Schlüssel-Wert-Paare). Strings benötigen normalerweise keine Anführungszeichen, mehrzeiliger Inhalt kann literale Blöcke (|) oder gefaltete Blöcke (>) verwenden, und Anker (&) mit Aliases (*) ermöglichen es, einen Wert einmal zu definieren und mehrfach zu referenzieren, wodurch Wiederholungen in großen Konfigurationsdateien reduziert werden.
YAML 1.2, die aktuelle Spezifikation, ist eine strikte Obermenge von JSON: Jedes gültige JSON-Dokument ist auch gültiges YAML. Das bedeutet, dass Sie YAML- und JSON-Syntax innerhalb derselben Datei mischen können. Multi-Dokument-Unterstützung über den ---Trennzeichner ermöglicht das Einbetten mehrerer unabhängiger Dokumente in einer einzigen Datei, was bei Kubernetes-Manifesten und Helm-Templates üblich ist.
Die Hauptfalle von YAML ist seine Empfindlichkeit gegenüber Leerzeichen. Tabs sind für die Einrückung nicht erlaubt (nur Leerzeichen), und ein falsch ausgerichteter Schlüssel kann die Dokumentstruktur stillschweigend verändern. Das "Norwegen-Problem" — bei dem nicht in Anführungszeichen stehende Werte wie "no", "yes", "on" und "off" als Booleans interpretiert werden — ist eine weitere berüchtigte Fehlerquelle. YAML 1.2 hat einige dieser Probleme behoben, aber viele Parser verwenden standardmäßig noch YAML-1.1-Regeln.
YAML 1.1 definiert einen breiten Satz von Boolean-Literalen einschließlich yes/no, on/off, true/false und deren großgeschriebenen Varianten. Ein Ländercode wie NO wird als Boolean false geparst, und der String "on" wird zu true — das berüchtigte "Norwegen-Problem". YAML 1.2 beschränkt Booleans auf nur true und false, aber viele populäre Parser (einschließlich PyYAML) verwenden standardmäßig noch YAML-1.1-Regeln. Die sichere Lösung ist, Strings, die fehlinterpretiert werden könnten, immer in Anführungszeichen zu setzen. Tab-Zeichen sind für die Einrückung ebenfalls strikt verboten; nur Leerzeichen sind erlaubt, und ein Tab in der Einrückung verursacht einen Parserfehler. Zwei Leerzeichen pro Ebene ist die gängigste Konvention.
YAML bietet zwei Block-Skalar-Stile für mehrzeilige Strings. Der literale Block-Skalar (|) bewahrt Zeilenumbrüche genau wie geschrieben, was ihn ideal für eingebettete Skripte oder SQL-Abfragen macht. Der gefaltete Block-Skalar (>) verbindet aufeinanderfolgende Zeilen mit Leerzeichen, was gut für lange Beschreibungen oder Absätze funktioniert. Beide Stile unterstützen Modifikatoren: |- und >- entfernen den abschließenden Zeilenumbruch, während |+ und >+ alle abschließenden Zeilenumbrüche beibehalten.
Anker und Aliases sind YAMLs Mechanismus zur Wiederverwendung von Inhalten. Ein Anker (&name) markiert einen Knoten für spätere Referenz, und ein Alias (*name) fügt diesen Knoten an anderer Stelle im Dokument ein. In Kombination mit dem Merge-Schlüssel (<<: *defaults) ermöglicht dieses Muster, gemeinsame Einstellungen einmal zu definieren und in mehrere Mappings zusammenzuführen. Es ist besonders nützlich in CI/CD-Konfigurationen, in denen viele Jobs gemeinsame Umgebungsvariablen, Caching-Regeln oder Deployment-Schritte teilen.