Getty Images/iStockphoto

XML und YAML: Vergleich von Konfigurationsdateiformaten

Datenbanken verwenden Serialisierungssprachen wie XML und YAML, um Daten zu übertragen. XML und YAML haben unterschiedliche Stärken: Admins sollten wissen, wie man sie einsetzt.

Sprachen zur Serialisierung von Daten, wie Extensible Markup Language und YAML Ain’t Markup Language, sind in der Regel in Infrastructure-as-Code-Management-Software zu finden. Verstehen Sie die Unterschiede und Anwendungsfälle von XML und YAML, um Ihr Automatisierungspotenzial bei der Anwendungsentwicklung zu maximieren.

XML und YAML bieten Administratoren viele Möglichkeiten, Daten zu automatisieren und zu strukturieren. Durch die Kenntnis der Unterschiede können Administratoren jedoch das richtige Tool für ihre Konfigurationsaufgabe auswählen. Dieser Artikel vergleicht die beiden Datenserialisierungssprachen und bietet denjenigen, die bereits mit einer der beiden Sprachen vertraut sind, eine Ressource, um sie von der anderen zu unterscheiden.

XML-Syntax

XML ist eine Auszeichnungssprache, die Daten strukturell organisiert und es zwei verschiedenen Systemen oder Anwendungen ermöglicht, den Inhalt auszutauschen und zu verstehen. Sie bieten ein Standardformat, das sowohl für Menschen als auch für Maschinen lesbar ist. XML erreicht das durch die Verwendung von beschreibenden Tags zur Kennzeichnung bestimmter Informationen, ähnlich wie HTML. Mit dieser Auszeichnungssprache können Administratoren auch ihre eigenen Tags definieren, um ihren Anforderungen gerecht zu werden. Programmiersprachen, die den XML-Standard anerkennen, können dessen Daten interpretieren.

XML definiert das Format der Daten in Dokumenten, mit .xml als Dateierweiterung. Ein Beispiel hierfür sind die Anwendungen von Microsoft 365, wie Word und Excel. Diese Apps verwenden XML, um die Struktur des Inhalts einer Datei zu definieren. Microsoft-365-Dokumentdateien haben ein x-Zeichen am Ende der Erweiterung, zum Beispiel .docx, was die Verwendung des XML-Formats widerspiegelt.

XML-Dokumente bestehen aus einer Baumstruktur, die mit einem Wurzelelement beginnt und sich in ein oder mehrere untergeordnete Elemente verzweigt. Die Datei stützt sich auf eine Dokumenttypdeklaration (DTD), die die Struktur, die Elemente und die Attribute der Datei definiert. Der DTD-Tag beginnt mit <!DOCTYPE> und enthält die Regeln für die Struktur des Dokuments. Tags oder ein externer Dokumentenverweis definieren die Struktur. Kommentare in XML-Dokumenten befinden sich innerhalb des Tags <--!comment-text-->.

Linux-Entwickler verwenden XML, um strukturierte Informationen zwischen Anwendungen auszutauschen. Für Administratoren von Rechenzentren ist es als Konfigurations-Tool weniger wichtig, obwohl sie es für die Verbindung mit Datenquellen verwenden können. Infrastructure as Code Tools (IaC) wie Ansible können mit dem Ansible-XML-Modul auch XML-Dateien lesen.

YAML-Syntax

YAML ist eine Sprache zur Serialisierung von Daten in IaC-Konfigurationsdateien, die Einstellungen deklarieren. YAML verwendet eine andere Struktur und Syntax als XML, wodurch es für Menschen lesbar und nicht maschinenlesbar ist. Die primäre Funktion von YAML ist die Datenübertragung und nicht die Datenformatierung.

Die Syntax ist streng, aber einfach. Sie verwendet Leerzeichen – keine Tabulatoren – um eine hierarchische Struktur zu definieren. Abschnitte werden durch diese Leerzeichen verschachtelt. YAML verwendet keine Formatierungssymbole wie XML, wodurch es leichter zu lesen und zu verstehen ist.

Aus Sicht eines Rechenzentrums ist YAML ein nützliches Tool. IaC-Tools wie Ansible, Docker Compose, Terraform und AWS CloudFormation verwenden YAML, um Konfigurationen für verschiedene Bare-Metal- und virtuelle Systeme zu definieren und zu verwalten.

YAML ist das gängigste Format für Konfigurationsdateien, um Automatisierungsvorteile wie Konsistenz, Wiederholbarkeit und einfache Änderung zu erreichen, insbesondere mit Tools wie Ansible. Docker Compose beispielsweise verwendet YAML-Dateien, um mehrere Dienste oder Anwendungen zu definieren. Auch das Kubernetes-Container-Management setzt auf YAML. Administratoren setzen häufig YAML-basierte IaC-Tools ein, um Linux-basierte Technologien zu verwalten. Die Einfachheit von YAML macht es auch leichter, Dateien zu überprüfen und sich das Layout des Rechenzentrums vorzustellen.

Das Beispiel-Playbook in Abbildung 1 stammt aus der ursprünglichen Ansible-Dokumentation und stellt die YAML-Struktur dar, die die Funktionalität der Datei definiert. Diese Funktionalität ermöglicht die Automatisierung und Skalierbarkeit von On-Premises- und Cloud-Umgebungen.

Ansible-Playbook mit YAML
Abbildung 1: Das ist ein Beispiel für ein Ansible-Playbook mit YAML.

YAML-Code beginnt mit drei Bindestrichen (---) und schließt mit drei Punkten () ab. Abschnitte von YAML-Dokumenten werden als Maps bezeichnet. Maps sind hierarchische Listen von Werten.

Listen beginnen mit einem Schlüssel, der auf einen oder mehrere Werte verweist. Zum Beispiel lässt sich ein Schlüssel namens Vögel mit drei Werten (eagle, chicken, hawk) einrichten:

# YAML bird list
---
birds:
- eagle
- chicken
- hawk
...

Arbeit mit XML- und YAML-Dateien

Leistungsfähige Texteditoren wie Vim und Emacs sind erweiterbar und unterstützen XML- und YAML-Dokumente. Darüber hinaus erleichtern leistungsfähige integrierte Entwicklungsumgebungen (IDEs) die Verwaltung dieser Dateien. Dateiautoren können jeden beliebigen Editor verwenden, sollten aber prüfen, ob Dienstprogramme für XML- und YAML-Erweiterungen zusätzliche Funktionen bereitstellen. Tools wie Visual Studio Code, Eclipse, Notepad++ und PyCharm bieten Standardentwicklungsfunktionen wie Fehlerprüfung, automatische Vervollständigung und Syntaxhervorhebung.

XML-Validatoren ermöglichen es den Autoren, die Syntax und Struktur ihrer Dokumente zu überprüfen, bevor sie diese in der Produktion verwenden. Validatoren erkennen zum Beispiel einen der häufigsten XML-Fehler: fehlende schließende Tags. Die Validierung kann in einen Editor oder eine IDE integriert sein oder über einen externen Dienst erfolgen. Fehler in XML-Dokumenten führen zu sofortigen Fehlern, daher ist es wichtig, diese frühzeitig zu erkennen.

Wie bei jeder Konfigurationsdatei sind Maßnahmen zur Versionskontrolle heutzutage unerlässlich. Verwenden Sie ein Repository-System wie Git, um Dateien zu verwalten.

Sicherheit von XML- und YAML-Dateien

Sicherheit ist kein inhärenter Bestandteil von Textdateien. Die Integrität und Vertraulichkeit von XML- und YAML-Ressourcen in Rechenzentren kann jedoch durch andere Vorsichtsmaßnahmen geschützt werden. Hier ein paar grundlegende Ideen:

  • Verwenden Sie ein Versionskontrollsystem, um die Verwendung von aktuellen Dateien sicherzustellen.
  • Führen Sie XML- oder YAML-Dateien aus vertrauenswürdigen Quellen aus.
  • Testen Sie Konfigurationsdateien auf VMs oder Geräten.
  • Kontrollieren Sie den Zugriff mit Hilfe von Berechtigungen.
  • Ziehen Sie die Verschlüsselung von Dateien in Betracht, um Inhalte zu schützen.

Erfahren Sie mehr über Data-Center-Infrastruktur

ComputerWeekly.de
Close