Was ist YAML?

11. Dezember 2023

Autoren

Tasmiha Khan

Writer

Michael Goodwin

Editorial lead, Automation & ITOps

Was ist YAML?

YAML ist eine vielseitige, von Menschen lesbare Daten-Serialisierungssprache, die häufig zum Verfassen von Konfigurationsdateien verwendet wird.

Ihr standardisiertes Format zur Darstellung strukturierter Daten ist sowohl für Menschen leicht verständlich als auch von Maschinen interpretierbar. „YAML“ ist ein Akronym, das für „YAML Ain't Markup Language“ oder „Yet Another Markup Language“ steht. Ersteres soll unterstreichen, dass die Sprache eher für Daten als für Dokumente gedacht ist.

Im Kern ist YAML auf Einfachheit und Lesbarkeit ausgelegt. Ihre übersichtliche, minimalistische Syntax verwendet Einrückungen, Schlüssel-Wert-Paare und intuitive Konventionen, damit Entwickler und Anwender komplexe Datenstrukturen in einem Format ausdrücken können, das der natürlichen Sprache ähnelt und auf einen Blick gut verständlich ist.

Durch die Betonung der Lesbarkeit durch Menschen eignet sich YAML besonders gut für eine Reihe von Anwendungen, z. B. Konfigurationsdateien und den Datenaustausch zwischen verschiedenen Systemen. Ihre unkomplizierte und intuitive Struktur verbessert die Benutzerfreundlichkeit in verschiedenen Bereichen, so dass Daten klar und verständlich definier- und organisierbar sind. YAML unterstützt den Unicode-Zeichensatz, mit dem sich eine Vielzahl von Zeichen und Symbolen aus verschiedenen Sprachen und Zeichensätzen darstellen lassen. Gültiges YAML führt zu einer Spezifikation ohne Syntaxfehler.

Die Anpassungsfähigkeit von YAML macht sie zu einer vielseitigen Wahl für ein breites Anwendungsspektrum – vom Konfigurationsmanagement über den Datenaustausch bis hin zur Automatisierung ist die Sprache in vielen Bereichen als zugängliches und strukturiertes Mittel zur Darstellung und Verwaltung von Daten einsetzbar.

Die neuesten Tech-News – von Experten bestätigt

Bleiben Sie mit dem Think-Newsletter über die wichtigsten – und faszinierendsten – Branchentrends in den Bereichen KI, Automatisierung, Daten und darüber hinaus auf dem Laufenden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.

Vielen Dank! Sie haben ein Abonnement abgeschlossen.

Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.

YAML-Syntax und -Attribute

Die YAML-Syntax weist verschiedene Attribute und Schlüsselelemente auf. Kenntnis der Struktur, der Datentypen und der in YAML-Dateien verwendeten Konventionen ist wichtig, um Daten effizient darzustellen und Lesbarkeit zu gewährleisten.

Karte (Wörterbuch)

In YAML werden Wörterbücher als Zuordnungen dargestellt. Sie sind eine Sammlung von Schlüssel-Wert-Paaren, bei denen jeder Schlüssel zu einem Wert gehört. Diese Datenstruktur ähnelt dem Konzept von Wörterbüchern oder Karten in verschiedenen Programmiersprachen.

Einrückung

Die YAML-Syntax basiert stark auf Einrückungen und der Anzahl der Leerzeichen zur Darstellung der Datenstruktur. Mit Leerzeichen – Tabulatorzeichen sind in YAML verboten – werden in YAML Hierarchie und Verschachtelung gekennzeichnet. Da die Einrückung ein wichtiger Aspekt der YAML-Struktur ist, muss auf ihre einheitliche Anwendung im gesamten YAML-Dokument geachtet werden.

„\n“ erzeugt einen Zeilenumbruch bzw. kann im YAML-Format unterschiedliche Elemente voneinander trennen.

Anführungszeichen

Für die meisten Skalare in YAML sind keine Anführungszeichen erforderlich. In bestimmten Szenarien sind sie jedoch nötig, um Verwechslungen auszuschließen, z. B. bei einer Textzeichenfolge mit Sonderzeichen, die für YAML-Syntax gehalten werden kann. Ein anderes Beispiel ist eine Zeichenfolge wie „true“, die aber nicht als boolescher Wert interpretiert werden soll. In solchen Fällen können einfache oder doppelte Anführungszeichen verwendet werden, abhängig von den Daten und dem, was ausgedrückt werden muss.

Schlüssel-Wert-Paare

Schlüssel-Wert-Paare werden in YAML einfach durch einen Doppelpunkt, gefolgt von einem Leerzeichen, getrennt.

Einige Beispiele:

Beruf: Lehrer

Sequenzen (Arrays)

Mit Sequenzen (in anderen Sprachen als Arrays oder Listen bezeichnet) können Sie in YAML eine Liste von Elementen definieren. Durch die Einrückung wird eine Sequenz vom übergeordneten Element getrennt, und jedes Listenelement beginnt mit einem Bindestrich (-), gefolgt von einem Leerzeichen. Alle Elemente in der Sequenz müssen um die gleiche Anzahl Leerzeichen eingerückt werden.

Einige Beispiele:

Früchte:
 - Apfel
 - Orange
 - Birne


Sequenzen können auch in einer Flusssequenz mit runden Klammern und Kommas dargestellt werden.1

Früchte: [Apfel, Orange, Birne]

Datentypen

YAML unterstützt verschiedene Datentypen wie Zeichenfolgen, ganze Zahlen, Gleitkommazahlen, boolesche Werte und NULL-Werte. Diese Datentypen bieten Flexibilität bei der Darstellung unterschiedlicher Arten von Informationen.

Kommentare

Kommentare werden in YAML mit dem #-Symbol gekennzeichnet. Sie helfen beim Hinzufügen von Erklärungen, Anmerkungen oder Kontext in YAML-Dateien.

Mehrzeilige Zeichenfolgen

YAML unterstützt mehrzeilige Zeichenfolgen, sodass Text mehrere Zeilen überspannen kann, ohne dass explizite Zeilenumbrüche anzugeben sind. Mehrzeilige Zeichenfolgen sind hilfreich, um Textblöcke in YAML-Dokumente einzubinden.

YAML-Dateien

YAML-Dateien weisen in der Regel die Erweiterungen .yaml oder .yml auf. Namens- und Strukturierungskonventionen sorgen bei YAML-Dateien für Einheitlichkeit und korrekte Dateninterpretation. YAML-Dateien können auch in Perl, Ruby und Python gelesen werden.

Anwendungsentwicklung

Steigen Sie ein: Entwicklung von Enterprise-Anwendungen in der Cloud

In diesem Video erläutert Dr. Peter Haumer, wie die moderne Entwicklung von Unternehmensanwendungen in der Hybrid Cloud heute aussieht, indem er verschiedene Komponenten und Praktiken demonstriert, darunter IBM Z Open Editor, IBM Wazi und Zowe. 

YAML, JSON und XML

YAML und JSON weisen zwar Ähnlichkeiten bei der Datendarstellung auf, doch YAML zeichnet sich durch seine Lesbarkeit, Ausdrucksstärke und Unterstützung komplexer Datenstrukturen aus. YAML ist eine Obermenge von JSON, was bedeutet, dass es neben erweiterten Funktionen und Befehlen auch alle Funktionen von JSON enthält.

JSON (JavaScript Object Notation) verwendet eine explizitere Syntax mit geschweiften Klammern {}, eckigen Klammern [] und Kommas. Obwohl die JSON-Syntax prägnant und weit verbreitet ist, kann ihre Lesbarkeit insbesondere in größeren Datensätzen leiden. JSONs Unterstützung für Datenstrukturen ist vergleichsweise begrenzt und beruht hauptsächlich auf Arrays, Objekten und Skalarwerten.

JSON wird häufig wegen seiner Kreuzkompatibilität für den Datenaustausch in Webanwendungen und APIs bevorzugt, während YAML eher dann verwendet wird, wenn die Lesbarkeit durch Menschen und komplexere Datenstrukturen erforderlich sind, beispielsweise Konfigurationsdateien und bestimmte Arten von Datendokumentation und -austausch.2

Im Vergleich zu XML ist YAML übersichtlicher und menschenfreundlicher, da Einfachheit und Verständlichkeit der Datendarstellung und des Datenaustauschs im Vordergrund stehen. YAML und XML unterscheiden sich grundlegend in Bezug auf Syntax und Zweck.

XML ist stark strukturiert und basiert auf expliziten öffnenden und schließenden Tags, die Verwirrung stiften können. YAML hat dagegen eine einfachere, mehr an der natürlichen Sprache angelehnte Struktur, bei der die Lesbarkeit durch Einrückung und Schlüssel-Wert-Paare ohne explizite schließende Tags im Vordergrund steht.

YAML-Anwendungsfälle

YAML kann in allen Programmiersprachen verwendet werden und kommt häufig bei Konfigurationsdateien sowie Datenaustausch und Dokumentation zum Einsatz. Das für Menschen lesbare Format macht eine Dokumentation übersichtlicher.

YAML und DevOps

YAML spielt eine zentrale Rolle in DevOps und ist maßgeblich an Automatisierung, Orchestrierung und Konfigurationsmanagement beteiligt. In DevOps-Praktiken dienen YAML-Dateien als Blaupausen, um Sequenzen von Aktionen und Konfigurationen in einem leicht verständlichen Format zu definieren. Diese Dateien werden verwendet, um die für die Automatisierung erforderlichen Schritte und Verfahren genau zu umreißen, so dass komplexe Arbeitsabläufe klar und übersichtlich dargestellt werden können.

Infrastruktur als Code (IaC)

YAML dient der Definition von Infrastruktur als Code, d. h. der Verwendung von Code anstelle manueller Prozesse zur Definition und Verwaltung der IT-Infrastruktur. IaC ermöglicht eine effizientere und einheitlichere Konfiguration der IT-Infrastruktur. YAML kann verwendet werden, um die gewünschte Konfiguration der Infrastruktur wie Virtual Machines, Netzwerke und Speicher zu definieren und die Beziehung zwischen IT-Infrastrukturkomponenten zu beschreiben.

Bereitstellungen

Mit YAML werden Bereitstellungsdateien für Anwendungen erstellt, die App-Konfigurationen, Abhängigkeiten, Ressourcenbeschränkungen und andere Informationen angeben, die zur effizienten Anwendungsbereitstellung und -leistung wichtig sind. YAML-Dateien sind eine Möglichkeit, um Bereitstellungsfehler zu vermeiden und Anwendungen durch Versionskontrolle und Automatisierung schneller bereitzustellen.

CI/CD-Pipeline-Konfiguration

YAML kann eine wichtige Rolle bei Pipelines zur kontinuierlichen Integration und Bereitstellung (CI/CD) spielen, einem wichtigen agilen DevOps-Workflow. Ähnlich wie bei Infrastrukturkonfiguration und Bereitstellungen werden mit YAML-Dateien die Pipelineschritte und -ziele definiert, um letztlich den CI/CD-Prozess zu automatisieren.

YAML- und DevOps-Tools

Viele Tools und Programme, die von DevOps-Teams verwendet werden, setzen auf YAML. Hier sind einige Beispiele:

Ansible

Ansible ist eine Open-Source-Automatisierungssoftware, die mit als Playbooks bezeichneten YAML-formatierten Dateien Aufgaben und Automatisierungsverfahren definiert. ​​Mit YAML-Vorlagen kann die Automatisierung sich wiederholender Aufgaben ohne Kenntnisse einer fortgeschrittenen Programmiersprache programmiert werden.3

Mit IBM watsonx Code Assistant für Red Hat® Ansible® Lightspeed können Benutzer eine Aufgabe in einfachem Englisch schreiben und erhalten YAML-Codeempfehlungen für Automatisierungsaufgaben. Mit diesen Codeempfehlungen werden dann Ansible Playbooks erstellt.3

Kubernetes

Kubernetes ist eine Open-Source-Container-Orchestrierungsplattform, mit der Bereitstellung, Skalierung und Verwaltung containerisierter Anwendungen automatisiert wird. Kubernetes arbeitet auf der Grundlage von „Zuständen“ und versucht, anhand spezifischer Anweisungen von einem aktuellen Zustand in den gewünschten zu gelangen. Mit YAML-Dateien können Kubernetes-Ressourcen wie Pods, Objekte und Bereitstellungen erstellt sowie der gewünschte Zustand von Kubernetes-Objekten festgelegt und kommuniziert werden.

GitHub

GitHub, eine webbasierte Plattform für Versionskontrolle und Zusammenarbeit in der Softwareentwicklung, integriert YAML zur Definition von Workflows. YAML-basierte Konfigurationen in GitHub-Repositorys ermöglichen die Einrichtung automatisierter Workflows zur kontinuierlichen Integration und Projektverwaltung.

Docker Compose

Docker Compose ist ein Tool zum Definieren und Ausführen von Multi-Container-Docker-Anwendungen.YAML-Dateien werden in Docker Compose verwendet, um die Services einer Anwendung zu konfigurieren.

Sprachübergreifender Datenaustausch

YAML ist sprachunabhängig und eignet sich daher ideal für den sprachübergreifenden Datenaustausch. Sobald eine YAML-Datei definiert ist, kann sie in anderen Sprachen wie Python oder Ruby ausgeführt werden.

Protokolldateien

Protokolldateien sind computergenerierte Textdatendateien mit Informationen zu den Vorgängen und Mustern in Anwendungen, Systemen, Servern und anderen IT-Ressourcen oder -Geräten. Sie dienen zur Messung der Ressourcenleistung und spielen eine entscheidende Rolle bei der System-Observability. Aufgrund ihrer Einfachheit werden mit YAML intuitive, übersichtliche Protokolldateien erstellt.

YAML – Vorteile

YAML hat sich aus mehreren Gründen zu einer beliebten Datenserialisierungssprache entwickelt, unter anderem wegen ihrer Einfachheit, Kompatibilität und Nützlichkeit bei der Erstellung von Konfigurationsdateien.

Einfachheit

Die Syntax von YAML ähnelt der Struktur natürlicher Sprache. Durch ihre Einfachheit und ihr minimalistisches Design ist sie sowohl für Entwickler als auch für technisch nicht versierte Benutzer leicht verständlich, was die Fehlerrate reduziert.

Verwendung in Konfigurationsdateien

YAML eignet sich aufgrund seines strukturierten und gut lesbaren Formats besonders für Konfigurationsdateien. Es ist handlich und vereinfacht die Definition einer Konfiguration durch Einrückung und Schlüssel-Wert-Paare, was es für verschiedene Softwareanwendungen anpassbar macht.

Kompatibilität

Die Plattformunabhängigkeit von YAML gewährleistet die Kompatibilität zwischen verschiedenen Systemen und Programmiersprachen. Dies erleichtert den nahtlosen Datenaustausch und die Interoperabilität zwischen verschiedenen Plattformen und Umgebungen.

Tools zur Verarbeitung von YAML

PyYAML ist eine bekannte Python-Bibliothek zum Parsen und Arbeiten mit YAML-Dateien in Python-basierten Anwendungen. Sie bietet Methoden zum Laden von YAML-Daten in Python-Objekte. PyYAML ermöglicht die Konvertierung von YAML-Dateien in praktische Datenstrukturen in Python-Anwendungen und umgekehrt.5

Tools wie PyYAML und andere YAML-Parser und -Validatoren wie yamllint sowie YAML Validator spielen eine wichtige Rolle dabei, Genauigkeit, Gültigkeit und Unversehrtheit von YAML-Dateien zu bewahren. Ihre Hauptaufgabe besteht darin, die YAML-Syntax zu validieren, Fehler zu identifizieren und die Einheitlichkeit innerhalb der YAML-Dokumente sicherzustellen.

Weiterführende Lösungen
IBM Enterprise Application Service für Java

Ein vollständig verwalteter, mandantenfähiger Service für die Entwicklung und Bereitstellung von Java-Anwendungen.

Java-Apps erkunden
DevOps-Lösungen

Verwenden Sie DevOps-Software und -Tools, um cloudnative Anwendungen für mehrere Geräte und Umgebungen zu erstellen, bereitzustellen und zu verwalten.

DevOps-Lösungen erkunden
Services für die Entwicklung von Unternehmensanwendungen

Die Entwicklung von Cloud-Anwendungen bedeutet: einmal erstellen, schnell iterieren und überall bereitstellen.

Services für die Anwendungsentwicklung
Machen Sie den nächsten Schritt

IBM Cloud Application Development Consulting Services bieten fachkundige Beratung und innovative Lösungen zur Optimierung Ihrer Cloud-Strategie. Arbeiten Sie mit den Cloud- und Entwicklungsexperten von IBM zusammen, um Ihre Anwendungen zu modernisieren, skalieren und beschleunigen und so transformative Ergebnisse für Ihr Unternehmen zu erzielen.

Mehr zu Services zur Anwendungsentwicklung Erste kostenlose Schritte beim Erstellen auf IBM Cloud