Startseite

Themen

YAML

Was ist YAML?
Die YAML-Lösung von IBM erkunden Zu KI-Updates anmelden
Illustration mit Collage aus Piktogrammen von Wolken, Kreisdiagramm, Diagrammen

Veröffentlicht: 11. Dezember 2023
Mitwirkende: Tasmiha Khan, Michael Goodwin

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.

Der Datenspeicher für KI

Erfahren Sie, wie wirkungsvoll die Integration einer Data-Lakehouse-Strategie in Ihre Datenarchitektur sein kann und unter anderem für Verbesserungen bei der Skalierung von KI und Möglichkeiten zur Kostenoptimierung sorgt.

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.

Zuordnung (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 entspricht 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. Verwendet werden können einfache oder doppelte Anführungszeichen. Doppelte Anführungszeichen müssen bei bestimmten Steuerzeichen, z. B. \b oder \x1d, verwendet werden.

Schlüssel-Wert-Paare

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

Beispiel:

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.

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 bei 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. Mit diesen Dateien werden die zur Automatisierung erforderlichen Schritte und Verfahren genau skizziert, um komplexe Arbeitsabläufe klar und übersichtlich darzustellen.

Infrastruktur als Code (IaC)

YAML dient der Definition von Infrastruktur als Code, also der Verwendung von Code anstelle manueller Prozesse, um IT-Infrastruktur zu definieren und zu verwalten. IaC ermöglicht eine effizientere und einheitlichere Konfiguration der IT-Infrastruktur. Mit YAML lässt sich die gewünschte Konfiguration der Infrastruktur, wie virtuelle Maschinen, Netzwerke und Speicher, definieren und die Beziehung zwischen IT-Infrastrukturkomponenten 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 YAML-Codeempfehlungen für Automatisierungsaufgaben erhalten. 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.4  YAML-Dateien dienen in Docker Compose zur Servicekonfiguration einer Anwendung.

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 watsonx Code Assistant für Red Hat Ansible Lightspeed

IBM watsonx Code Assistant für Red Hat Ansible Lightspeed vereinfacht die Erstellung von Ansible-Playbooks mit Inhaltsempfehlungen, die auf generativer KI basieren. Das Produkt wurde speziell entwickelt, um die IT-Automatisierung zu beschleunigen. Mit Empfehlungen zur Automatisierung von Inhalten wird der Nutzungskomfort von Ansible verbessert.

watsonx Code Assistant für Red Hat Ansible Lightspeed erkunden Live-Demo buchen

IBM watsonx Code Assistant

IBM watsonx Code Assistant nutzt generative KI, um die Entwicklung zu beschleunigen und gleichzeitig die Kernprinzipien von Vertrauen, Sicherheit und Compliance zu gewährleisten. Entwickler und IT-Verantwortliche können Anwendungen schneller modernisieren und mit Automatisierung ihre IT-Umgebungen zügig skalieren.

IBM watsonx Code Assistant erkunden

Ressourcen Technische Vorschau von IBM watsonx Code Assistant für Red Hat Ansible Lightspeed

Melden Sie sich an, um die technische Vorschau von IBM watsonx Code Assistant für Red Hat Ansible Lightspeed zu testen.

Webinarreihe zur Automatisierung von Code mit generativer KI

Erfahren Sie von Experten, Marktanalysten und Forschungswissenschaftlern, wie generative KI auf Ihre ITOps angewendet werden kann, um Geschäftsergebnisse in großem Maßstab zu erzielen.

Umgestaltung der IT-Automatisierung mit IBM Watsonx Code Assistant

Durch Automatisierung und KI-Technologien können IT-Organisationen Fachkräftemangel ausgleichen und Entwicklern ermöglichen, hochwertigen Code mit größerer Effizienz zu schreiben.

watsonx Code Assistant for Red Hat Ansible Lightspeed Community

Lernen Sie von Kollegen, tauschen Sie Ideen aus und werden Sie Teil unserer Community.

Machen Sie den nächsten Schritt

Entwickler und IT-Betreiber können mit dem IBM watsonx Code Assistant, der generative KI nutzt, um die Entwicklung zu beschleunigen und gleichzeitig die Prinzipien von Vertrauen, Sicherheit und Compliance im Mittelpunkt zu halten, die Modernisierung von Anwendungen beschleunigen und Automatisierungen generieren, um IT-Umgebungen schnell zu skalieren.

Entdecken Sie den watsonx Code Assistant
Fußnoten

1 „So stellen Sie Arrays in YAML dar“ (Link befindet sich außerhalb von ibm.com),” Tarun Telang, Educative, Inc., 2023

2 „Was ist der Unterschied zwischen YAML und JSON“ (Link befindet sich außerhalb von ibm.com), Amazon Web Services, 2023

„Was ist YAML“ (Link befindet sich außerhalb von ibm.com), Redhat.com, 3. März 2023

4 „Übersicht über Docker Compose“ (Link befindet sich außerhalb von ibm.com), Docker.com, 2023 

5 „Python YAML | Anleitung zur Handhabung von YAML-Dateien“ (Link befindet sich außerhalb von ibm.com), Gabriel Ramuglia, 11. September 2023