Veröffentlicht: 11. Dezember 2023
Mitwirkende: Tasmiha Khan, Michael Goodwin
YAML ist eine vielseitige, menschenlesbare Daten-Serialisierungssprache, die häufig für das Schreiben von Konfigurationsdateien verwendet wird.
Sie bietet ein standardisiertes Format für die Darstellung strukturierter Daten in einer Weise, die sowohl für Menschen leicht verständlich als auch von Maschinen interpretierbar ist. „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. Sie verwendet eine saubere und minimalistische Syntax, die auf Einrückungen, Schlüsselwertpaaren und intuitiven Konventionen basiert. Dieser Ansatz ermöglicht es Entwicklern und Anwendern, komplexe Datenstrukturen in einem Format auszudrücken, das der natürlichen Sprache ähnelt und auf den ersten Blick leicht zu verstehen ist.
Durch die Betonung der menschlichen Lesbarkeit eignet sich YAML besonders gut für verschiedene Anwendungen, z.B. für Konfigurationsdateien und den Datenaustausch zwischen verschiedenen Systemen. Ihre unkomplizierte und intuitive Struktur verbessert die Benutzerfreundlichkeit in verschiedenen Bereichen und ermöglicht es Benutzern, Daten auf klare und verständliche Weise zu definieren und zu organisieren. YAML unterstützt Unicode-Zeichen, sodass eine Vielzahl von Zeichen und Symbolen aus verschiedenen Sprachen und Zeichensätzen dargestellt werden können. Gültige 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 YAML in vielen Bereichen einsetzbar und bietet ein zugängliches und strukturiertes Mittel zur Darstellung und Verwaltung von Daten.
Jetzt ist es an der Zeit, Ihre Automatisierung mit der Kraft der generativen KI zu verbessern. Vereinbaren Sie eine 30-minütige persönliche Vorführung mit einem unserer Experten, um den IBM watsonx Code Assistant für Red Hat Ansible Lightspeed in Aktion zu sehen.
IBM Newsletter abonnieren
Es gibt verschiedene Attribute und Schlüsselelemente in der YAML-Syntax. Es ist wichtig, die Struktur, die Datentypen und die in YAML-Dateien verwendeten Konventionen zu verstehen, um eine effiziente Datenrepräsentation und Lesbarkeit zu gewährleisten.
In YAML werden Wörterbücher als Zuordnungen dargestellt. Sie sind eine Sammlung von Schlüsselwertpaaren, bei denen jeder Schlüssel einem Wert zugeordnet ist. Diese Datenstruktur ähnelt 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. Leerzeichen – keine Tabulatorzeichen, die in YAML verboten sind – werden in YAML verwendet, um Hierarchie und Verschachtelung zu kennzeichnen. Da YAML auf die Einrückung für die Struktur angewiesen ist, ist die Konsistenz im gesamten YAML-Dokument wichtig.
Newlines stellen Zeilenumbrüche oder das Ende einer Linie innerhalb des YAML-Formats dar, das zum Trennen unterschiedlicher Elemente verwendet wird.
Für die meisten Skalare in YAML sind keine Anführungszeichen erforderlich. In bestimmten Szenarien können jedoch Anführungszeichen erforderlich sein, um Verwirrung zu vermeiden, z. B. bei einer Textzeichenfolge, die Sonderzeichen enthält und mit der YAML-Syntax verwechselt werden könnte. Oder wenn Sie eine Zeichenfolge haben, die nur aus „true“ besteht, die Sie beispielsweise nicht in einen booleschen Wert umwandeln möchten. 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.
YAML verwendet ein einfaches Schlüssel-Wert-Paarformat, das durch einen Doppelpunkt getrennt ist, um Datenzuordnungen darzustellen.
Zum Beispiel:
Beruf: Lehrer
Mit Sequenzen (Arrays oder Listen in anderen Sprachen) können Sie eine Liste von Elementen in YAML definieren. Durch den Einzug 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 den gleichen Betrag eingerückt werden.
Einige Beispiele:
Früchte:
- Apfel
- Orange
- Birne
Sequenzen können auch in einer Flusssequenz mit 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.
YAML unterstützt Kommentare, die mit dem #-Symbol gekennzeichnet sind. Kommentare helfen beim Hinzufügen von Erklärungen, Anmerkungen oder Kontext in YAML-Dateien.
YAML unterstützt mehrzeilige Zeichenfolgen, sodass Text mehrere Zeilen überspannt, ohne dass explizite Zeilenumbrüche erforderlich sind. Mehrzeilige Zeichenfolgen sind nützlich für das Einfügen von Textblöcken in YAML-Dokumente.
YAML-Dateien verwenden in der Regel Erweiterungen wie .yaml oder .yml. Konventionen bei der Benennung und Strukturierung von YAML-Dateien sorgen für Einheitlichkeit und korrekte Interpretation der Daten. YAML-Dateien können auch in Perl, Ruby und Python gelesen werden.
YAML und JSON weisen Ähnlichkeiten in der Datendarstellung auf, jedoch zeichnet sich YAML 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 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 sie insbesondere in größeren Datensätzen weniger lesbar sein. JSONs Unterstützung für Datenstrukturen ist vergleichsweise begrenzt, hauptsächlich mit Arrays, Objekten und Skalarwerten.
JSON wird häufig wegen seiner Kreuzkompatibilität für den Datenaustausch in Webanwendungen und APIs bevorzugt, während YAML häufiger in Szenarien verwendet wird, in denen menschliche Lesbarkeit und komplexere Datenstrukturen erforderlich sind, wie Konfigurationsdateien und bestimmte Arten der Datendokumentation und des Datenaustauschs.2
Im Vergleich zu XML bietet YAML eine übersichtlichere und menschenfreundlichere Alternative, bei der die Einfachheit und Verständlichkeit der Datendarstellung und des Datenaustauschs im Vordergrund steht. 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, was es etwas verwirrend macht. YAML hat dagegen eine einfachere und natürlichere sprachähnliche Struktur, bei der die Lesbarkeit durch Einrückung und Schlüssel-Wert-Paare ohne explizite schließende Tags im Vordergrund steht.
YAML kann mit allen Programmiersprachen verwendet werden und wird häufig für Konfigurationsdateien sowie für Datenaustausch und Dokumentation verwendet. Ihr für Menschen lesbares Format verbessert die Klarheit der Dokumentation.
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.
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 virtuelle Maschinen, Netzwerke und Speicher zu definieren und die Beziehung zwischen IT-Infrastrukturkomponenten zu beschreiben.
YAML wird verwendet, um Bereitstellungsdateien für Anwendungen zu erstellen, die App-Konfigurationen, Abhängigkeiten, Ressourcenbeschränkungen und andere wichtige Informationen für eine effiziente Anwendungsbereitstellung und -leistung angeben. YAML-Dateien helfen, Fehler bei der Bereitstellung zu vermeiden und die Geschwindigkeit der Anwendungsbereitstellung durch Versionskontrolle und Automatisierung zu erhöhen.
YAML kann eine wichtige Rolle in Pipelines für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) spielen, einem wichtigen agilen DevOps-Workflow. Ähnlich wie bei der Infrastrukturkonfiguration und dem Deployment werden YAML-Dateien verwendet, um die Pipelineschritte und -ziele zu definieren und letztlich den CI/CD-Prozess zu automatisieren.
Viele von DevOps-Teams verwendete Tools und Programme nutzen YAML, darunter:
Ansible ist eine Open-Source-Automatisierungssoftwareanwendung, die YAML-formatierte Dateien verwendet, die als Playbooks bezeichnet werden, um Aufgaben und Automatisierungsverfahren zu definieren. Mit YAML-Vorlagen können Benutzer die Automatisierung sich wiederholender Aufgaben ohne Kenntnisse einer fortgeschrittenen Programmiersprache programmieren.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. Diese Codeempfehlungen werden zur Erstellung von Ansible Playbooks verwendet.3
Kubernetes ist eine Open-Source-Container-Orchestrierungsplattform zur Automatisierung der Bereitstellung, Skalierung und Verwaltung containerisierter Anwendungen. Kubernetes arbeitet auf der Grundlage von „Zuständen“ und versucht, anhand spezifischer Anweisungen von einem aktuellen Zustand in einen gewünschten Zustand zu gelangen. YAML-Dateien können verwendet werden, um Kubernetes-Ressourcen wie Pods, Objekte und Bereitstellungen zu erstellen sowie den gewünschten Status von Kubernetes-Objekten festzulegen und zu kommunizieren.
GitHub, eine webbasierte Plattform für Versionskontrolle und Zusammenarbeit in der Softwareentwicklung, integriert YAML für die Definition von Workflows. YAML-basierte Konfigurationen in GitHub-Repositorys ermöglichen die Einrichtung automatisierter Workflows für kontinuierliche Integration und Projektmanagement.
Docker Compose ist ein Tool zum Definieren und Ausführen von Multi-Container-Docker-Anwendungen.4 YAML-Dateien werden in Docker Compose verwendet, um die Services einer Anwendung zu konfigurieren.
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, die Informationen zu den Vorgängen und Mustern in Anwendungen, Systemen, Servern und anderen IT-Ressourcen oder -Geräten enthalten. Sie dienen zur Messung der Ressourcenleistung und spielen eine entscheidende Rolle bei der Systembeobachtbarkeit. Aufgrund ihrer Einfachheit wird YAML verwendet, um intuitive, saubere Protokolldateien zu erstellen.
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 natürlichen Sprachstrukturen. 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 Verständlichkeit erhöht und Fehler reduziert.
YAML eignet sich aufgrund seines strukturierten und lesbaren Formats gut für Konfigurationsdateien. Es vereinfacht den Prozess der Konfigurationsdefinition durch Einrückung und Schlüssel-Wert-Paare, was es handhabbar und anpassbar für verschiedene Softwareanwendungen macht.
Die Plattformunabhängigkeit von YAML gewährleistet die Kompatibilität zwischen verschiedenen Systemen und Programmiersprachen und erleichtert den nahtlosen Datenaustausch und die Interoperabilität zwischen verschiedenen Plattformen und Umgebungen.
PyYAML ist eine bekannte Python-Bibliothek, die zum Parsen und Arbeiten mit YAML-Dateien in Python-basierten Anwendungen verwendet wird. 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
Werkzeuge wie PyYAML und andere YAML-Parser und -Validatoren wie Yamllint sowie YAML Validator spielen eine wichtige Rolle bei der Beibehaltung der Genauigkeit, Gültigkeit und Unversehrtheit von YAML-Dateien. 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 entmystifiziert den Prozess der Erstellung von Ansible-Playbooks mit Inhaltsempfehlungen, die auf generativer KI basieren. Das Produkt wurde speziell entwickelt, um die IT-Automatisierung zu beschleunigen. Sie erhalten Empfehlungen für die Automatisierung von Inhalten für eine verbesserte Ansible-Erfahrung.
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 die Modernisierung von Anwendungen beschleunigen und Automatisierungen vornehmen, um IT-Umgebungen schnell zu skalieren.
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