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 wollen wir diese Frage beantworten.

Was dieses Buch behandelt

Wie der Titel schon sagt, geht es in diesem Buch um die 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.

Viele, viele Komponenten sind daran beteiligt - darunter Betriebssysteme, die heute in weit größerem Umfang als früher in Netzwerken eingesetzt werden, neue Methoden wie die kontinuierliche Integration und Werkzeuge, die früher vielleicht nur in den Bereich des Systemadministrators fielen (Werkzeuge wie Quellcodekontrolle und Konfigurationsmanagementsysteme). Da all diese Faktoren bei der Definition von Netzwerkprogrammierbarkeit und -automatisierung eine Rolle spielen, behandeln wir alle diese Themen. Unser Ziel ist es, dass du mit diesem Buch ein Fundament an Wissen rund um Netzwerkprogrammierung und -automatisierung legst.

Was ist neu in dieser Ausgabe?

Diese Ausgabe des Buches wurde gegenüber dem Original aktualisiert und enthält vier völlig neue Kapitel:

Außerdem haben wir die bestehenden Kapitel aktualisiert, um neuere Konzepte wie diese zu berücksichtigen:

  • Google Protokollpuffer

  • gRPC/gNMI

  • Terraform

  • Nornir

Zusätzlich zu all diesen Neuerungen haben wir jedes Kapitel aufgefrischt und erweitert, um den Fortschritten und Veränderungen in der Branche Rechnung zu tragen, die seit der Veröffentlichung der ersten Ausgabe stattgefunden haben.

Wir freuen uns sehr, dass wir diese neuen, spannenden Themen in das Buch aufnehmen können. Aus Platzgründen wurden einige Inhalte aus der ersten Ausgabe nicht in diese übernommen. Anstatt diese Inhalte jedoch einfach zu entfernen, haben wir sie unter https://oreilly-npa-book.github.io frei zugänglich gemacht .

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 die Inhalte, die dich am meisten interessieren, leicht finden kannst. 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 sehen wirst, war SDN der Ursprung 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, "Wolke"

Er stellt Cloud Computing aus der Netzwerkperspektive vor und bietet einen Ausgangspunkt für viele relevante Themen wie Container und Kubernetes-Netzwerke. Wir besprechen auch, wie sich die vorhandenen Fähigkeiten von Netzwerkingenieuren auf eine Cloud-basierte Umgebung übertragen lassen.

Kapitel 5, "Netzwerkentwicklungsumgebungen"

Erforscht die Werkzeuge und Techniken zur Pflege einer Netzwerkentwicklungsumgebung. Dies ist ein wichtiger Teil eines jeden Netzwerkautomatisierungsprojekts und ermöglicht es Teams, effektiver an Lösungen zusammenzuarbeiten und effizient von der Entwicklung über das Testen bis hin zur Produktion zu arbeiten.

Kapitel 6, "Python"

Führt Netzwerkprofis in Python ein. Diese Programmiersprache wird häufig in der Netzwerkprogrammierung und Automatisierung eingesetzt. In diesem Kapitel werden viele Grundlagen der Programmierung mit Python behandelt: Datentypen, Bedingungen, Schleifen, Arbeit mit Dateien, Funktionen, Klassen und Module.

Kapitel 7, "Los"

Erweitert das Repertoire der Programmiersprachen für die Netzwerkautomatisierung um eine zweite Option, indem er Go erkundet. Go ist in letzter Zeit immer beliebter geworden - nicht zuletzt wegen des Cloud-Native-Ökosystems - und ist selbst für diejenigen, die gerade erst mit der Automatisierung beginnen, ein wertvolles Gut.

Kapitel 8, "Datenformate und Modelle"

Dieses Kapitel befasst sich mit den Formaten und Methoden für die Übertragung, Speicherung und Modellierung von Netzwerkautomatisierungsdaten. Die Fähigkeit, Daten zu verstehen und mit ihnen zu arbeiten, ist eine grundlegende Fähigkeit für jeden Netzwerkautomatisierer, und in diesem Kapitel schaffen wir eine solide Grundlage für die folgenden Kapitel.

Kapitel 9, "Templates"

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. Wir untersuchen aber auch Go-Vorlagen und Extensible Stylesheet Language Transformations (XSLT).

Kapitel 10, "Arbeiten mit Netzwerk-APIs"

Behandelt die Rolle von APIs bei der Netzwerkprogrammierung und -automatisierung. Wir untersuchen die Schlüsselbegriffe und -technologien von APIs wie HTTP, NETCONF, RESTCONF und gNMI, um zu zeigen, wie sie für die Netzwerkprogrammierung und -automatisierung genutzt werden können. Wir verwenden sowohl Python- als auch Go-Bibliotheken, um Netzwerkgeräte mithilfe dieser APIs zu automatisieren.

Kapitel 11, "Versionskontrolle mit Git"

Hier wird Git vorgestellt, ein 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 12, "Automatisierungswerkzeuge"

Erforscht den Einsatz von Open-Source-Automatisierungswerkzeugen wie Ansible, Nornir mit NAPALM und Terraform. Du lernst, wie diese Tools speziell für die Netzwerkprogrammierung und -automatisierung eingesetzt werden können, und zwar sowohl mit imperativen als auch mit deklarativen Ansätzen.

Kapitel 13, "Kontinuierliche Integration"

Untersucht die kontinuierliche Integration (Continuous Integration, CI) und die wichtigsten Tools und Technologien, die dabei zum Einsatz kommen. Wir besprechen den Einsatz von testgetriebener Entwicklung (TDD), erkunden Tools und Frameworks wie GitLab und Jenkins und werfen einen Blick auf einen beispielhaften Netzwerk-Automatisierungsworkflow, der all diese CI-Elemente beinhaltet.

Kapitel 14, "Netzwerkautomatisierungsarchitektur"

Vereint alle in den vorherigen Kapiteln behandelten Konzepte, indem es eine Referenzarchitektur für eine ganzheitliche Netzwerkautomatisierungslösung vorschlägt. Bringt Automatisierung und Orchestrierung zusammen, erforscht die Idee einer Wahrheitsquelle und zeigt, wie Benutzerinteraktionen in einem solchen System funktionieren könnten.

Wer sollte dieses Buch lesen?

Wie wir bereits erwähnt haben, ist es das Ziel dieses Buches, dir grundlegende Kenntnisse und Fähigkeiten in den Bereichen Netzwerkprogrammierung und Automatisierung zu vermitteln. Wir glauben, dass Angehörige 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" Netzwerkingenieur ist, also jemand, der sich mit Netzwerkprotokollen, der Konfiguration von Netzwerkgeräten und dem Betrieb und der Verwaltung eines Netzwerks auskennt. Du lernst, wie du die Automatisierung für das Konfigurationsmanagement, die Fehlersuche, die Beobachtbarkeit und vieles mehr nutzen kannst. Dieses Buch ermöglicht es Netzwerktechnikern, durch Automatisierung und Programmierbarkeit effizienter zu arbeiten und eine zuverlässigere Infrastruktur aufzubauen.

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 (insbesondere Linux, Quellcodekontrolle und Konfigurationsmanagementsysteme). Dieses Buch kann Systemadministratoren 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 zentralen Netzwerkprotokolle oder -konzepte behandelt oder erklärt. Wir gehen jedoch davon aus, dass viele Systemadministratoren aufgrund der Verwaltung von netzwerkgebundenen 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 von Bruce Hartpence (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 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 du über ein grundlegendes Verständnis der wichtigsten Netzwerkprotokolle und -konzepte verfügst, und alle Beispiele, die wir anführen, sind netzwerkspezifische Beispiele. Genau wie Systemadministratoren werden auch Softwareentwickler, die noch keine Erfahrung mit Netzwerken haben, 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 anderen Technologiebereich gibt es auch im Bereich der Netzwerkprogrammierung und -automatisierung viele Versionen und Variationen von Technologien und Tools. Deshalb haben wir uns in diesem Buch auf eine Reihe von Werkzeugen konzentriert, die unserer Meinung nach am besten die in der Praxis vorkommenden repräsentieren. Für Linux gibt es zum Beispiel viele Distributionen, aber wir konzentrieren uns nur auf Debian, Ubuntu (das wiederum ein Derivat von Debian ist) und CentOS (ein Derivat von Red Hat Enterprise Linux oder RHEL). Um es dir leicht zu machen, nennen wir die spezifischen Versionen der verschiedenen Tools in den jeweiligen Kapiteln.

Online-Ressourcen

Wir können unmöglich alles abdecken, was wir gerne über Netzwerkautomatisierung und Netzwerkprogrammierbarkeit wissen möchten. Deshalb verweisen wir in diesem Buch auf zusätzliche Online-Ressourcen, die dir helfen können, die vorgestellten Konzepte und Fähigkeiten zu verstehen.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen 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.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/oreilly-npa-book/examples/tree/v2 zum Download bereit .

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, sende bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.

Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel:"Network Programmability and Automation, 2nd Edition, von Matt Oswalt, Christian Adell, Scott S. Lowe und Jason Edelman (O'Reilly). Copyright 2023 Matt Oswalt, Scott S. Lowe, and Christian Adell, 978-1-098-11083-3."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/NPA_2e aufrufen .

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.

Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media

Folge uns auf Twitter: https://twitter.com/oreillymedia

Schau uns auf YouTube: https://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 sind zu viele, um sie direkt zu nennen, aber es sind die Menschen, die Open-Source-Projekte wie NAPALM, Netmiko, Nornir und Containerlab ins Leben gerufen haben, die dazu beigetragen haben, die Branche über Netzwerkautomatisierung aufzuklären, und die unermüdlich ihr Wissen und ihre Erfahrung zum Nutzen anderer eingebracht haben. Wir danken euch allen für eure Bemühungen und eure Beiträge.

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, Sreenivas Makam, Michael Kehoe und Arthur Chiao 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, wenn wir nicht auch die Mitarbeiter von O'Reilly Media einbeziehen würden: unsere Redakteurinnen Simina Calin, Jennifer Pollock und Melissa Potter, die Produktionsredakteurin Kristen Brown, die Lektorin Sharon Wilkey, die Korrektorin Stephanie English und den Indexer Bill Morrison.

Get Netzwerk-Programmierbarkeit und Automatisierung, 2. 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.