Site icon bintorosoft.com

19.3 JSON- und YAML-Übungen für Network Automation

Network Engineer Intently Analyzing Data Server Racks in a Neon-Lit High Tech Data Center

JSON- und YAML-Übungen gehören zu den wichtigsten praktischen Grundlagen der Network Automation, weil moderne Automatisierungsprozesse fast immer mit strukturierten Daten arbeiten. Während klassische Netzwerkarbeit stark von CLI-Befehlen, Textausgaben und direkten Konfigurationszeilen geprägt ist, basieren automatisierte Abläufe zunehmend auf Datenmodellen, Inventardateien, API-Antworten, Template-Variablen und standardisierten Austauschformaten. Genau hier kommen JSON und YAML ins Spiel. Beide Formate helfen dabei, Informationen über Geräte, Rollen, Interfaces, IP-Adressen, VLANs oder Standortparameter maschinenlesbar und gleichzeitig für Menschen nachvollziehbar abzulegen. Für Network Engineers ist es deshalb nicht genug, JSON und YAML nur theoretisch zu kennen. Entscheidend ist, mit konkreten Übungen zu verstehen, wie diese Formate aufgebaut sind, wo typische Fehler entstehen und wie sie im Alltag mit Python, APIs, Templates und Automatisierungswerkzeugen verwendet werden.

Warum JSON und YAML in der Netzwerkautomatisierung so wichtig sind

Automatisierung braucht strukturierte Daten

Ein Mensch kann Informationen auch dann oft noch verstehen, wenn sie unvollständig, uneinheitlich oder nur lose dokumentiert sind. Ein Skript, ein API-Call oder ein Template benötigt dagegen eine definierte Struktur. Genau deshalb sind JSON und YAML im Netzwerkumfeld so relevant: Sie bilden diese Struktur ab.

Wer JSON und YAML sicher beherrscht, versteht deshalb nicht nur Datenformate, sondern auch einen zentralen Teil moderner Netzwerkautomatisierung.

Die Formate wirken einfach, sind aber operativ entscheidend

JSON und YAML sehen auf den ersten Blick oft harmlos aus. Ein paar Schlüssel, Werte, Listen und Einrückungen wirken nicht besonders kompliziert. In der Praxis entscheidet jedoch genau diese Struktur darüber, ob ein Template korrekt rendert, ein API-Request angenommen wird oder ein Inventarskript überhaupt mit den Daten arbeiten kann.

Gerade deshalb sind praktische Übungen so wertvoll. Sie machen sichtbar, wie kleine Formatfehler große Automatisierungsprobleme verursachen können.

Was JSON und YAML grundsätzlich unterscheidet

JSON ist streng und API-nah

JSON, also JavaScript Object Notation, wird in Netzwerken besonders häufig bei APIs, RESTCONF, REST-basierten Plattformen und Python-Datenstrukturen verwendet. Es ist formal klar, relativ kompakt und maschinenfreundlich.

Ein einfaches JSON-Beispiel:

{
  "hostname": "R1",
  "mgmt_ip": "192.0.2.101",
  "role": "router"
}

Typische Eigenschaften von JSON:

JSON ist besonders geeignet, wenn Daten streng validiert, über APIs übertragen oder direkt in Python verarbeitet werden.

YAML ist lesbarer und stark in Automatisierungswerkzeugen vertreten

YAML wird besonders häufig für Inventare, Variablen, Ansible-Playbooks und strukturierte Konfigurationsdaten verwendet. Es ist für Menschen oft angenehmer lesbar als JSON, reagiert dafür aber sehr empfindlich auf Einrückung und Strukturfehler.

Ein einfaches YAML-Beispiel:

hostname: R1
mgmt_ip: 192.0.2.101
role: router

Typische Eigenschaften von YAML:

Für Network Automation ist YAML besonders praktisch, wenn Inventare, Variablen oder Playbooks gepflegt werden.

Mit einfachen JSON-Übungen beginnen

Übung: Ein einzelnes Gerät als JSON-Objekt beschreiben

Der beste Einstieg ist eine sehr einfache Struktur. Ziel ist es, ein einzelnes Netzwerkgerät in JSON zu beschreiben. Diese Übung trainiert Schlüssel, Werte und die Grundidee strukturierter Daten.

Ein mögliches Beispiel:

{
  "hostname": "SW1",
  "mgmt_ip": "192.0.2.102",
  "role": "switch",
  "platform": "cisco_ios"
}

Was dabei gelernt wird:

Diese Übung ist besonders wichtig, weil sie die Grundlage für Inventare, API-Bodies und kleine Python-Dictionaries bildet.

Übung: Eine Geräteliste als JSON-Liste anlegen

Im nächsten Schritt sollte nicht nur ein Gerät, sondern eine Liste mehrerer Geräte modelliert werden. Damit wird die Idee trainiert, dieselbe Struktur auf mehrere Objekte anzuwenden.

Ein Beispiel:

{
  "devices": [
    {
      "hostname": "R1",
      "mgmt_ip": "192.0.2.101",
      "role": "router"
    },
    {
      "hostname": "SW1",
      "mgmt_ip": "192.0.2.102",
      "role": "switch"
    }
  ]
}

Diese Übung ist im Netzwerkalltag sehr realistisch, weil Inventardaten fast immer mehrere Geräte enthalten.

Mit einfachen YAML-Übungen beginnen

Übung: Dasselbe Gerät in YAML beschreiben

Eine gute Übung besteht darin, dieselben Daten einmal in JSON und einmal in YAML zu schreiben. So werden die Unterschiede sehr schnell greifbar.

Das gleiche Gerät in YAML:

hostname: SW1
mgmt_ip: 192.0.2.102
role: switch
platform: cisco_ios

Hier zeigt sich sofort der praktische Unterschied:

Diese Übung schafft ein gutes Gefühl dafür, warum YAML in Automatisierungswerkzeugen so beliebt ist.

Übung: Eine Geräteliste in YAML modellieren

Auch hier ist der nächste sinnvolle Schritt eine Liste mehrerer Geräte. Dadurch wird die YAML-Listensyntax geübt.

Ein Beispiel:

devices:
  - hostname: R1
    mgmt_ip: 192.0.2.101
    role: router
  - hostname: SW1
    mgmt_ip: 192.0.2.102
    role: switch

Diese Struktur wird in der Praxis ständig verwendet, etwa für Inventardateien oder Variablenlisten.

Wichtige Lernziele dabei:

Geräterollen, Interfaces und VLANs modellieren

Übung: Interfaces als Liste abbilden

Nach einfachen Geräteobjekten ist es sinnvoll, strukturierte Netzwerkinformationen wie Interfaces zu modellieren. So wird sichtbar, wie JSON und YAML nicht nur Stammdaten, sondern auch betriebliche Konfigurationsdaten abbilden können.

Ein JSON-Beispiel:

{
  "hostname": "SW1",
  "interfaces": [
    {
      "name": "GigabitEthernet1/0/1",
      "mode": "access",
      "vlan": 10
    },
    {
      "name": "GigabitEthernet1/0/24",
      "mode": "trunk",
      "allowed_vlans": [10, 20, 30]
    }
  ]
}

Diese Übung trainiert mehrere Dinge gleichzeitig:

Gerade hier entsteht ein erstes Gefühl für echte Modellierung im Netzwerk.

Übung: Dasselbe Modell in YAML schreiben

Die gleiche Struktur in YAML sieht typischerweise so aus:

hostname: SW1
interfaces:
  - name: GigabitEthernet1/0/1
    mode: access
    vlan: 10
  - name: GigabitEthernet1/0/24
    mode: trunk
    allowed_vlans:
      - 10
      - 20
      - 30

Diese Übung ist besonders wertvoll, weil sie realen Netzwerkdaten sehr nahe kommt. Genau solche Strukturen landen später oft in Inventaren oder Variablendateien.

JSON und YAML mit Python praktisch verwenden

Übung: JSON in Python lesen

Eine besonders wichtige Übung besteht darin, JSON nicht nur zu schreiben, sondern aus Python heraus einzulesen. So wird die Verbindung zwischen Datenformat und Automatisierungslogik sichtbar.

Ein einfaches Beispiel:

import json

data = '''
{
  "hostname": "R1",
  "mgmt_ip": "192.0.2.101",
  "role": "router"
}
'''

device = json.loads(data)
print(device["hostname"])
print(device["mgmt_ip"])

Diese Übung zeigt:

Übung: JSON-Datei aus Python schreiben

Ebenso hilfreich ist es, Daten wieder als JSON auszugeben. So entsteht ein realistischer Workflow, etwa für kleine Reports oder API-nahe Tests.

Ein Beispiel:

import json

device = {
    "hostname": "R1",
    "mgmt_ip": "192.0.2.101",
    "role": "router"
}

with open("device.json", "w") as f:
    json.dump(device, f, indent=2)

Gerade für spätere Dokumentation, API-Payloads oder Zwischenspeicher ist das sehr praxisnah.

Übung: YAML mit Python lesen

Für YAML wird häufig die Python-Bibliothek PyYAML verwendet. Eine einfache Übung ist, ein kleines YAML-Inventar einzulesen und Geräteinformationen auszugeben.

Ein Beispiel:

import yaml

with open("inventory.yml", "r") as f:
    data = yaml.safe_load(f)

for device in data["devices"]:
    print(device["hostname"], device["mgmt_ip"])

Diese Übung ist besonders wichtig, weil genau dieser Ablauf in vielen echten Netzwerkskripten vorkommt.

Übungen für typische Network-Automation-Anwendungsfälle

Übung: Ein kleines Geräteinventar anlegen

Eine sehr sinnvolle Praxisübung ist es, ein kleines Inventar für ein Lab anzulegen. Ziel ist, drei bis fünf Geräte mit Hostname, IP, Rolle und Plattform in YAML oder JSON sauber zu modellieren.

Ein YAML-Beispiel:

devices:
  - hostname: R1
    host: 192.0.2.101
    role: router
    platform: cisco_ios
  - hostname: SW1
    host: 192.0.2.102
    role: switch
    platform: cisco_ios

Darauf aufbauend kann ein Python-Skript diese Daten einlesen und einfache Reports erzeugen.

So entsteht eine direkte Verbindung zwischen Datenmodell und Automatisierungslogik.

Übung: VLAN-Daten für ein Template vorbereiten

Eine weitere sehr praxisnahe Übung ist, VLAN- oder Interface-Daten so zu modellieren, dass sie später in einem Template verwendet werden könnten.

Ein YAML-Beispiel:

vlans:
  - id: 10
    name: Users
  - id: 20
    name: Voice
  - id: 30
    name: Guest

Diese Struktur könnte später in Python oder Jinja2 genutzt werden, um Konfigurationszeilen zu erzeugen.

Typische Fehler in JSON und YAML bewusst üben

JSON-Fehler erkennen

Gerade beim Lernen ist es sinnvoll, typische Fehler nicht nur zu vermeiden, sondern bewusst zu sehen. Dadurch werden Parser- und Syntaxregeln schneller verstanden.

Ein fehlerhaftes JSON-Beispiel:

{
  "hostname": "R1"
  "mgmt_ip": "192.0.2.101"
}

Hier fehlt das Komma zwischen den Feldern. Solche Fehler zeigen sehr anschaulich, wie streng JSON aufgebaut ist.

Diese Fehler im Lab bewusst zu sehen, ist didaktisch sehr hilfreich.

YAML-Fehler erkennen

Auch YAML sollte mit typischen Fehlern bewusst geübt werden, besonders mit Blick auf Einrückung und Struktur.

Ein fehlerhaftes Beispiel:

devices:
  - hostname: R1
    host: 192.0.2.101
   role: router

Hier ist die Einrückung von role fehlerhaft. Solche Fehler sind im Alltag besonders häufig.

Gerade YAML wirkt einfach, ist aber in der Praxis sehr empfindlich.

Datenqualität und Konsistenz trainieren

Einheitliche Feldnamen verwenden

Eine wichtige Übung besteht darin, Feldnamen konsequent gleich zu halten. In echten Projekten führen kleine Inkonsistenzen schnell zu Logikfehlern.

Eine einfache, aber sehr nützliche Übung ist es, kleine Inventare auf Konsistenz zu prüfen und gezielt zu vereinheitlichen.

Datentypen bewusst wählen

Auch Datentypen sollten früh bewusst trainiert werden. Eine VLAN-ID kann als Zahl modelliert werden, eine IP-Adresse besser als String. Boolean-Werte sollten bewusst als echte Wahrheitswerte geschrieben werden.

Ein gutes JSON-Beispiel:

{
  "hostname": "SW1",
  "enabled": true,
  "vlan": 10
}

Ein problematisches Beispiel wäre:

{
  "hostname": "SW1",
  "enabled": "true",
  "vlan": "10"
}

Formal kann das je nach Kontext noch verarbeitet werden, fachlich ist es oft unpräzise und führt später leichter zu Fehlern.

JSON und YAML im Zusammenspiel mit Templates denken

Datenformate sind die Eingabe für spätere Konfiguration

Ein zentraler Lernschritt besteht darin, JSON und YAML nicht isoliert zu betrachten, sondern als Eingabedaten für spätere Automatisierung. Wer Datenstrukturen sauber modelliert, erleichtert sich spätere Template- oder API-Arbeit enorm.

Gerade im Lab sollte deshalb immer mitgedacht werden: Wie würden diese Daten später weiterverwendet?

Kleine Template-nahe Übung

Eine gute Übung ist es, eine YAML-Datei mit NTP- und Syslog-Daten so zu strukturieren, dass daraus später Konfigurationen erzeugt werden könnten.

Ein YAML-Beispiel:

device:
  hostname: R1
  ntp_servers:
    - 10.10.10.10
    - 10.10.10.11
  syslog_servers:
    - 10.20.20.20
    - 10.20.20.21

Hier zeigt sich bereits eine sehr praxisnahe Denkweise: Daten werden nicht zufällig, sondern für spätere Nutzung modelliert.

Best Practices für JSON- und YAML-Übungen in der Network Automation

Wer JSON- und YAML-Übungen konsequent in die eigene Network-Automation-Praxis einbaut, trainiert damit weit mehr als nur zwei Datenformate. Geübt wird gleichzeitig strukturiertes Denken, saubere Datenmodellierung, Fehlersuche, Konsistenz und die Fähigkeit, Informationen so abzulegen, dass Skripte, Templates und APIs zuverlässig damit arbeiten können. Genau deshalb gehören JSON und YAML nicht an den Rand der Netzwerkautomatisierung, sondern ins Zentrum jeder soliden Lern- und Übungspraxis.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version