Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Willkommen bei Network Programmability and Automation!
Die Netzwerkbranche verändert sich dramatisch. Der Antrieb für Unternehmen und Netzwerkexperten, sich die Ideen und Konzepte der Netzwerkprogrammierbarkeit und -automatisierung zu eigen zu machen, ist heute größer als je zuvor. Angetrieben wird er durch eine Revolution neuer Protokolle, neuer Technologien, neuer Bereitstellungsmodelle und die Notwendigkeit für Unternehmen, agiler und flexibler zu sein, um wettbewerbsfähig zu bleiben. Aber was sind Netzwerkprogrammierbarkeit und -automatisierung? Zu Beginn dieses Buches werfen wir einen kurzen Blick darauf, wie wir diese Frage beantworten können.
Was dieses Buch behandelt
Wie der Titel schon andeutet, liegt der Schwerpunkt dieses Buches auf der Programmierbarkeit und Automatisierung von Netzwerken. Im Kern geht es bei der Netzwerkprogrammierung und -automatisierung um die Vereinfachung der Aufgaben, die mit der Konfiguration, der Verwaltung und dem Betrieb von Netzwerkgeräten, Netzwerktopologien, Netzwerkdiensten und Netzwerkverbindungen verbunden sind. Dazu gehören Betriebssysteme, die heute in weitaus größerem Umfang als früher in Netzwerken eingesetzt werden, neue Methoden wie Continuous Integration und die Verwendung von Tools, die früher nur Systemadministratoren vorbehalten waren (z. B. Quellcodekontrolle und Konfigurationsmanagementsysteme). Wir sind der Meinung, dass all diese Faktoren eine Rolle bei der Definition von Netzwerkprogrammierung und -automatisierung spielen, deshalb behandeln wir alle diese Themen. Unser Ziel in diesem Buch ist es, den Leserinnen und Lesern ein Fundament an Wissen über Netzwerkprogrammierung und -automatisierung zu vermitteln.
Wie dieses Buch organisiert ist
Dieses Buch ist nicht unbedingt dafür gedacht, von Anfang bis Ende gelesen zu werden. Stattdessen haben wir die Themen so aufgeteilt, dass du leicht die Themen finden kannst, die dich am meisten interessieren. Es kann sinnvoll sein, die ersten drei Kapitel der Reihe nach zu lesen, da sie Hintergrundinformationen liefern und die Grundlage für den Rest des Buches bilden. Von dort aus kannst du zu den Themen springen, die für dich am nützlichsten oder interessantesten sind. Wir haben versucht, die Kapitel relativ eigenständig zu halten, aber das ist - wie bei jeder Technologie - nicht immer möglich. Wo immer wir können, geben wir Querverweise an, damit du die benötigten Informationen findest.
Hier ist ein kurzer Überblick darüber, wie wir die Themen organisiert haben:
- Kapitel 1, Trends in der Netzwerkbranche
-
Bietet einen Überblick über die wichtigsten Ereignisse und Trends, die Software Defined Networking (SDN) ins Leben gerufen haben. Wie du in Kapitel 1 erfährst, war SDN der Ausgangspunkt für einen verstärkten Fokus auf die Programmierbarkeit und Automatisierung von Netzwerken.
- Kapitel 2, Netzwerkautomatisierung
-
Nimmt die SDN-Diskussion aus Kapitel 1 auf und konzentriert sich speziell auf die Netzwerkautomatisierung - die Geschichte der Netzwerkautomatisierung, Arten der Automatisierung, Tools und Technologien für die Automatisierung und wie die Automatisierung Betriebsmodelle beeinflusst (und wie Betriebsmodelle die Automatisierung beeinflussen).
- Kapitel 3, Linux
-
Bietet einen Überblick über das Linux-Betriebssystem. Dieses Kapitel ist keineswegs eine umfassende Diskussion über Linux, sondern soll Netzwerkexperten mit Linux, grundlegenden Linux-Befehlen und Linux-Netzwerkkonzepten vertraut machen.
- Kapitel 4, Python in einem Netzwerkkontext lernen
-
Führt Netzwerkprofis in die Entwicklungssprache Python ein. Python wird häufig in der Netzwerkprogrammierung und -automatisierung eingesetzt. Dieses Kapitel behandelt viele der Grundlagen der Programmierung mit Python: Datentypen, Bedingungen, Schleifen, Arbeit mit Dateien, Funktionen, Klassen und Module.
- Kapitel 5, Datenformate und Datenmodelle
-
Führt in gängige Datenformate ein, die häufig in Netzwerkautomatisierungsprojekten verwendet werden. Es werden die JavaScript Object Notation (JSON), die eXtensible Markup Language (XML) und die YAML Ain't Markup Language (YAML) behandelt. Das Kapitel führt dann in die Konzepte der Datenmodellierung ein und gibt eine kurze Einführung in YANG, eine gängige Datenmodellierungssprache für Netzwerke.
Du fragst dich, was ein "Datenformat" ist?
Wenn du dich noch nicht so gut auskennst, lass dich nicht von der Terminologie abschrecken. Ein Datenformat ist nichts anderes als die Art und Weise, wie Daten kodiert oder gekapselt werden, wenn sie zwischen zwei Punkten übertragen werden (zum Beispiel, wenn Daten als Antwort auf einen API-Aufruf zurückgegeben werden). In Kapitel 5 wird das alles für dich aufgeschlüsselt.
- Kapitel 6, Templates für die Netzwerkkonfiguration
-
Hier geht es um die Verwendung von Templating-Sprachen zur Erstellung von Netzwerkgerätekonfigurationen. Das Hauptaugenmerk dieses Kapitels liegt auf der Templating-Sprache Jinja, da sie nativ in Python integriert ist. Außerdem werden wir Mako und ERB, zwei weitere Templating-Sprachen, besprechen. Mako lässt sich mit Python integrieren, während ERB hauptsächlich mit Ruby verwendet wird.
- Kapitel 7, Arbeiten mit Netzwerk-APIs
-
Wir werfen einen Blick auf die Rolle von Anwendungsprogrammierschnittstellen (APIs) bei der Netzwerkprogrammierung und -automatisierung. Wir werden uns mit den wichtigsten Begriffen und Technologien im Zusammenhang mit APIs beschäftigen und anhand einiger beliebter herstellerspezifischer APIs - sowohl Geräte-APIs als auch Controller-APIs - zeigen, wie sie für die Netzwerkprogrammierung und -automatisierung genutzt werden können.
- Kapitel 8, Versionskontrolle mit Git
-
Hier wird Git vorgestellt, ein sehr beliebtes und weit verbreitetes Tool zur Quellcodekontrolle. Wir sprechen darüber, warum die Quellcodekontrolle wichtig ist, wie sie im Kontext der Netzwerkprogrammierung und Automatisierung eingesetzt wird und wie man mit beliebten Online-Diensten wie GitHub arbeitet.
- Kapitel 9, Automatisierungswerkzeuge
-
Untersucht die Verwendung von Open-Source-Automatisierungstools wie Ansible, Salt und StackStorm und wie diese Tools speziell für die Netzwerkprogrammierung und -automatisierung eingesetzt werden können.
- Kapitel 10, Kontinuierliche Integration
-
Untersucht die Konzepte der kontinuierlichen Integration (Continuous Integration, CI) und die wichtigsten Tools und Technologien, die damit verbunden sind. Wir besprechen den Einsatz von testgetriebener Entwicklung (TDD), lernen Tools und Frameworks wie Jenkins und Gerrit kennen und werfen einen Blick auf einen beispielhaften Netzwerk-Automatisierungsworkflow, der all diese CI-Elemente beinhaltet.
- Kapitel 11, Aufbau einer Kultur für Netzwerkautomatisierung
-
Untersucht, warum eine gute Kultur ein entscheidendes und grundlegendes Element für die Netzwerkautomatisierung ist, und zeigt, wie eine solche Kultur gefördert werden kann.
- Anhang A, Fortgeschrittene Netzwerkarbeit unter Linux
-
Setzt die in Kapitel 3 begonnene Diskussion fort, taucht aber viel tiefer in die Vernetzung mit macvlan-Schnittstellen, die Vernetzung mit virtuellen Maschinen (VMs), die Arbeit mit Netzwerk-Namensräumen, die Vernetzung mit Linux-Containern (einschließlich Docker-Containern ) und die Verwendung von Open vSwitch (OVS) ein.
- Anhang B, Verwendung von NAPALM
-
Bietet eine Einführung in die Verwendung der Python-Bibliothek NAPALM (Network Automation and Programmability Abstraction Layer with Multi-vendor support). In diesem Abschnitt wird die Verwendung von NAPALM sowohl für das herstellerunabhängige Konfigurationsmanagement als auch für die Abfrage von Daten aus Netzwerkgeräten erläutert. Schließlich werfen wir einen Blick darauf, wie NAPALM mit Tools wie Ansible, Salt und StackStorm zusammenarbeitet, die alle in Kapitel 9 behandelt werden.
Wer sollte dieses Buch lesen?
Wie wir bereits erwähnt haben, ist es das Ziel dieses Buches, den Leserinnen und Lesern grundlegende Kenntnisse und Fähigkeiten in den Bereichen Netzwerkprogrammierung und Automatisierung zu vermitteln. Wir glauben, dass Mitglieder verschiedener IT-Disziplinen von der Lektüre dieses Buches profitieren werden.
Netzwerk-Ingenieure
Da der Schwerpunkt auf der Programmierbarkeit und Automatisierung von Netzwerken liegt, ist es nur natürlich, dass eine Zielgruppe dieses Buches der "traditionelle" Netzwerktechniker ist, also jemand, der sich mit Netzwerkprotokollen, der Konfiguration von Netzwerkgeräten und dem Betrieb und der Verwaltung eines Netzwerks einigermaßen auskennt. Wir glauben, dass dieses Buch die Netzwerktechniker/innen von heute in die Lage versetzen wird, durch Automatisierung und Programmierbarkeit effizienter und produktiver zu arbeiten.
Voraussetzungen
Netzwerktechniker/innen, die mehr über Netzwerkprogrammierung und -automatisierung erfahren möchten, brauchen keine Vorkenntnisse in den Bereichen Softwareentwicklung, Programmierung, Automatisierung oder DevOps-Tools. Die einzige Voraussetzung ist ein offener Geist und die Bereitschaft, mehr über neue Technologien zu erfahren und darüber, wie sie sich auf dich - den Netzwerkprofi - und die gesamte Netzwerkbranche auswirken.
Systemadministratoren
Systemadministratoren, die in erster Linie für die Verwaltung der Systeme zuständig sind, die mit dem Netzwerk verbunden sind, haben möglicherweise bereits Erfahrung mit einigen der in diesem Buch besprochenen Tools (vor allem Linux, Quellcodekontrolle und Konfigurationsmanagementsysteme). Dieses Buch kann ihnen dabei helfen, ihre Kenntnisse und ihr Verständnis für diese Tools zu erweitern, indem es sie in einem anderen Kontext vorstellt (z. B. die Verwendung von Ansible zur Konfiguration eines Netzwerk-Switches im Gegensatz zur Verwendung von Ansible zur Konfiguration eines Servers mit einer Linux-Distribution).
Voraussetzungen
In diesem Buch werden keine grundlegenden Netzwerkprotokolle oder Konzepte behandelt oder erklärt. Wir gehen jedoch davon aus, dass viele Systemadministratoren aufgrund ihrer Arbeit mit netzwerkverbundenen Systemen auch über Grundkenntnisse der wichtigsten Netzwerkprotokolle verfügen. Die meisten erfahrenen Systemadministratoren sollten also gut zurechtkommen. Wenn deine Netzwerkkenntnisse nicht so gut sind, empfehlen wir dir, dieses Buch mit einem Buch zu ergänzen, das sich auf die wichtigsten Netzwerkkonzepte und -ideen konzentriert. Der Packet Guide to Core Network Protocols (O'Reilly) ist zum Beispiel eine gute Wahl.
Software-Entwickler
Auch Softwareentwickler können von der Lektüre dieses Buches profitieren. Viele Entwickler haben bereits Erfahrung mit einigen der in diesem Buch besprochenen Programmiersprachen und Entwicklerwerkzeuge (wie Python und/oder Git). Wie Systemadministratoren können auch Entwickler es nützlich finden, Entwicklerwerkzeuge und Sprachen in einem netzwerkspezifischen Kontext zu sehen (z. B. wie Python zum Abrufen und Speichern netzwerkspezifischer Daten verwendet werden kann).
Voraussetzungen
Wir gehen davon aus, dass die Leser/innen ein grundlegendes Verständnis der wichtigsten Netzwerkprotokolle und -konzepte haben, und alle Beispiele, die wir geben, sind netzwerkspezifisch. Genau wie Systemadministratoren werden auch Softwareentwickler, die sich noch nicht mit Netzwerken auskennen, das Material in diesem Buch wahrscheinlich mit einem Buch ergänzen müssen, das sich auf die wichtigsten Netzwerkkonzepte konzentriert.
In diesem Buch verwendete Werkzeuge
Wie in jedem Technologiebereich gibt es auch im Bereich der Netzwerkprogrammierung und -automatisierung viele verschiedene Versionen und Varianten von Technologien und Tools. Deshalb haben wir uns in diesem Buch auf eine Reihe von Tools beschränkt, die unserer Meinung nach am besten die Tools repräsentieren, die der Leser in diesem Bereich findet. Es gibt zum Beispiel viele verschiedene Linux-Distributionen, aber wir werden uns nur auf Debian, Ubuntu (das wiederum ein Derivat von Debian ist) und CentOS (ein Derivat von Red Hat Enterprise Linux [RHEL]) konzentrieren. Um es den Lesern leicht zu machen, nennen wir die spezifischen Versionen der verschiedenen Tools in den jeweiligen Kapiteln der einzelnen Tools.
Online-Ressourcen
Uns ist klar, dass wir unmöglich alles abdecken können, was wir gerne über Netzwerkautomatisierung und Netzwerkprogrammierbarkeit wissen möchten. Deshalb verweisen wir im gesamten Buch auf zusätzliche Online-Ressourcen, die du vielleicht hilfreich und nützlich findest, um die vorgestellten Konzepte, Ideen und Fähigkeiten zu verstehen.
In diesem Buch verwendete Konventionen
Die folgenden typografischen Konventionen werden in diesem Buch verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
O'Reilly Safari
Hinweis
Safari (ehemals Safari Books Online) ist eine mitgliedschaftsbasierte Schulungs- und Nachschlageplattform für Unternehmen, Behörden, Lehrkräfte und Einzelpersonen.
Mitglieder haben Zugang zu Tausenden von Büchern, Schulungsvideos, Lernpfaden, interaktiven Tutorials und kuratierten Playlists von über 250 Verlagen, darunter O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett und Course Technology, um nur einige zu nennen.
Weitere Informationen erhältst du unter http://oreilly.com/safari.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben unter eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://bit.ly/network-programmability-and-automation aufrufen .
Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an bookquestions@oreilly.com.
Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://www.youtube.com/oreillymedia
Danksagungen
Dieses Buch wäre ohne die Hilfe und Unterstützung einer großen Gemeinschaft von Menschen nicht möglich gewesen.
Zunächst möchten wir uns bei der dynamischen Community für Netzwerkautomatisierung bedanken. Es gibt zu viele Leute, um sie direkt zu nennen, aber es sind die Leute, die Open-Source-Projekte wie NAPALM und Netmiko ins Leben gerufen haben, die dazu beigetragen haben, die Leute über Netzwerkautomatisierung aufzuklären, und die unermüdlich ihr Wissen und ihre Erfahrung zum Nutzen anderer eingebracht haben. Ich danke euch allen für eure Bemühungen und eure Beiträge.
Unsere Autoren haben dazu beigetragen, dass dieses Buch vollständiger und umfassender ist, als wir es ohne ihre Hilfe hätten tun können, und dafür sind wir ihnen sehr dankbar. Mircea Ulinic hat den SaltStack-Abschnitt im Kapitel über Konfigurationsmanagement-Tools beigesteuert, und Jere Julian hat einige Puppet-Inhalte beigesteuert, die wir in dieser Version des Buches leider nicht unterbringen konnten. Unser Dank geht an Mircea und Jere.
Unsere technischen Prüferinnen und Prüfer haben entscheidend dazu beigetragen, dass der Inhalt sowohl technisch korrekt als auch für die Leserinnen und Leser leicht konsumierbar ist. Wir möchten uns bei Patrick Ogenstad, Akhil Behl, Eric Chou und Sreenivas Makam bedanken. Danke, dass ihr dazu beigetragen habt, dass dieses Buch das Beste ist, was es sein kann!
Schließlich wäre unser Dank nicht vollständig, ohne die Mitarbeiter von O'Reilly Media einzubeziehen: Virginia Wilson und Courtney Allen, unsere Redakteurinnen; Dwight Ramsey, unser Lektor; Rachel Monaghan, unsere Korrektorin; Judy McConville, unsere Indexerin; Colleen Cole, unsere Produktionsredakteurin; Randy Comer, der Coverdesigner; und Rebecca Demarest, die Illustratorin. Wir können gar nicht genug betonen, wie wichtig ihre Arbeit war, um dieses Buch vom Konzept bis zur Produktion zu bringen, und wir danken ihnen für ihren Einsatz und ihr Engagement.
Get Netzwerk-Programmierbarkeit und Automatisierung now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.