Das automatisierbare Netzwerk - Anforderungen, Konzepte, und Werkzeuge aus der IT
(TDE-NPAT)
Die heutige Netzwerkwelt befindet sich in einem schnellen und umfassenden Wandel. Der Trend geht dabei weg von der klassischen manuellen Konfiguration einzelner Geräte, hin zum programmierbaren, automatisierten Netzwerk. Die Vielzahl der neuen Technologien, Protokolle, Denkansätze und Arbeitsprozesse erlaubt es Unternehmen, den steigenden Anforderungen an Agilität und Flexibilität nachzukommen. Dieser Kurs bietet einen Überblick über die relevanten Komponenten und Begriffe im Bereich programmierbarer, automatisierter Netzwerke und beleuchtet deren Grundprinzipien und Fähigkeiten. Damit bietet er eine solide Basis, um sich in der modernen Netzwerkwelt zurechtzufinden.
Kursinhalt
- Die Rolle von SDN
- Netzwerkautomatisierung
- Die Evolution der Management-Plane
- Moderne Netzwerk APIs
- Scripting mit Python
- Die Rolle von Linux
- Configuration Templates
- Version Control
- Automatisierungswerkzeuge
- Continuous Integration
Zielgruppe
Alle, die einen kompakten Einstieg in die neuen Möglichkeiten und Verfahren der Netzwerk-Automatisierung und Programmierung benötigen.
Voraussetzungen
Für einen erfolgreichen Kursbesuch sollten grundlegende Kenntnisse zu Netzwerken und dem Konfigurieren von Netzgeräten vorhanden sein. Um die Code-Beispiele nachvollziehen und bearbeiten zu können, werden zumindest rudimentäre Fähigkeiten im Scripting mit Python vorausgesetzt. Auch die Kenntnis der wichtigsten Befehle der Linux-Shell sind hilfreich.
Inhaltsverzeichnis
1 Motivation
- 1.1 Das klassische Netzwerk
- 1.1.1 Die (R)Evolution
- 1.2 Die Bedeutung von Software
- 1.2.1 APIs in Netzwerken
- 1.2.2 SDN
- 1.2.3 Network Functions Virtualisation
- 1.2.4 Cloud Computing
- 1.2.5 Network Virtualization
- 1.2.6 Software-Defined WAN?
2 Die Basis
- 2.1 Datenmodelle in Netzwerken
- 2.1.1 XML Schema Definition
- 2.1.2 YANG
- 2.1.3 Protocol Buffers
- 2.2 Datenaustauschformate
- 2.2.1 Data Serialization und Character Sets
- 2.2.2 XML
- 2.2.3 JSON
- 2.2.4 YAML
- 2.3 API-Protokolle
- 2.3.1 NETCONF
- 2.3.2 Capability Advertisement
- 2.3.3 REST API
- 2.3.4 RESTCONF
- 2.3.5 gRPC
- 2.4 Die Programmiersprache Python
- 2.4.1 Download, Installation und Lieferumfang
- 2.4.2 Python-Shell
- 2.4.3 Grundlegende Kontroll- und Datenstrukturen
- 2.4.4 Import
- 2.5 Konfigurations-Templates
- 2.5.1 Template-Sprachen
- 2.5.2 Templates für die Netzwerkautomatisierung
- 2.5.3 Jinja2
- 2.6 Linux
- 2.6.1 Die Rolle in modernen Netzwerken
- 2.6.2 Distributionen
- 2.6.3 Netzwerkkonfiguration
3 Entwicklung
- 3.1 Methoden der Software-Entwicklung
- 3.1.1 Paradigmen und Modelle
- 3.1.2 Methoden und Frameworks
- 3.2 DevOps
- 3.2.1 Ablauf bei DevOps
- 3.2.2 Tools
- 3.3 Versionsverwaltung
- 3.3.1 Git
- 3.3.2 GitHub
- 3.3.3 GitLab
- 3.4 Testing
- 3.4.1 Testautomatisierung
- 3.4.2 Netzwerk-Testing
- 3.5 Continuous Integration
- 3.5.1 GitLab für DevOps
- 3.5.2 Jenkins
- 3.5.3 TravisCI
4 Betrieb
- 4.1 Orchestrierung
- 4.1.1 Puppet und Chef
- 4.1.2 Saltstack
- 4.1.3 Ansible
- 4.2 Virtualisierung
- 4.3 Container-Virtualisierung
- 4.3.1 Linux Containers (LXC)
- 4.3.2 LXD (Linux Container Hypervisor)
- 4.4 Docker
- 4.4.1 Bestandteile von Docker
- 4.4.2 Kubernetes
- 4.4.3 Swarm
- 4.5 Continuous Delivery
- 4.5.1 CI/CD
- 4.5.2 Skripte, Tools und Lifecycle von Apps in der Cloud