Startseite
Themen
YAML
Veröffentlicht: 11. Dezember 2023
Mitwirkende: Tasmiha Khan, Michael Goodwin
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.
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.
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.
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.
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.
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 werden in YAML einfach durch einen Doppelpunkt, gefolgt von einem Leerzeichen, getrennt.
Beispiel:
Beruf: Lehrer
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]
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 werden in YAML mit dem #-Symbol gekennzeichnet. Sie helfen beim Hinzufügen von Erklärungen, Anmerkungen oder Kontext in YAML-Dateien.
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 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 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 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 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.
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.
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.
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.
Viele Tools und Programme, die von DevOps-Teams verwendet werden, setzen auf YAML. Hier sind einige Beispiele:
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 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, 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 ist ein Tool zum Definieren und Ausführen von Multi-Container-Docker-Anwendungen.4 YAML-Dateien dienen in Docker Compose zur Servicekonfiguration einer Anwendung.
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 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 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.
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.
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.
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.
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.
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.
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.
Melden Sie sich an, um die technische Vorschau von IBM watsonx Code Assistant für Red Hat Ansible Lightspeed zu testen.
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.
Durch Automatisierung und KI-Technologien können IT-Organisationen Fachkräftemangel ausgleichen und Entwicklern ermöglichen, hochwertigen Code mit größerer Effizienz zu schreiben.
Lernen Sie von Kollegen, tauschen Sie Ideen aus und werden Sie Teil unserer Community.
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
3 „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