{"id":35972,"date":"2019-10-31T22:08:54","date_gmt":"2019-10-31T19:08:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\/"},"modified":"2019-10-31T22:08:54","modified_gmt":"2019-10-31T19:08:54","slug":"avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","title":{"rendered":"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Die SDSM ist zu Ende gegangen, aber das unkontrollierte Verlangen zu schreiben bleibt bestehen. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/0\/kdpv.jpg\"><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/2da9a566e92a782cf1205a6da716d4c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Viele Jahre litt unser Bruder unter der Erledigung routinierter Aufgaben, kreuzte die Finger vor dem Commit und schlief wegen n\u00e4chtlicher Rollbacks nicht genug.<br \/>\nDoch dunkle Zeiten neigen sich dem Ende zu.<\/p>\n<p>Mit diesem Artikel beginne ich eine Serie dar\u00fcber, wie <i>mir<\/i> Automatisierung wahrgenommen wird. <br \/>\nIm Verlauf werden wir die Phasen der Automatisierung, die Speicherung von Variablen, die Formalisierung des Designs, RestAPI, NETCONF, YANG, YDK behandeln und werden viel programmieren. <br \/>\n<i>Mir<\/i> bedeutet, dass a) dies keine objektive Wahrheit ist, b) es nicht der unbestritten beste Ansatz ist, c) mein Blick selbst im Verlauf vom ersten bis zum letzten Artikel sich \u00e4ndern kann \u2014 um ehrlich zu sein, habe ich alles seit der Entwurfsphase bis zur Ver\u00f6ffentlichung zweimal komplett umgeschrieben. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Inhalt<\/h1>\n<p><\/p>\n<ol>\n<li> <b>Ziele<\/b>\n<ol>\n<li>Das Netzwerk \u2014 wie ein einziger Organismus<\/li>\n<li>Konfigurationstests<\/li>\n<li>Versionskontrolle<\/li>\n<li>\u00dcberwachung und Selbstwiederherstellung von Diensten<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Werkzeuge<\/b>\n<ol>\n<li>Inventarisierungssystem<\/li>\n<li>IP-Raumverwaltungssystem<\/li>\n<li>System zur Beschreibung von Netzwerkdiensten<\/li>\n<li>Ger\u00e4teinitialisierungsmechanismus<\/li>\n<li>Vendor-unabh\u00e4ngiges Konfigurationsmodell<\/li>\n<li>Vendor-spezifischer Treiber<\/li>\n<li>Mechanismus zur Bereitstellung von Konfigurationen auf ein Ger\u00e4t<\/li>\n<li>CI\/CD<\/li>\n<li>Mechanismus zur Datensicherung und Abweichungserkennung<\/li>\n<li>\u00dcberwachungssystem<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Fazit<\/b>\n <\/li>\n<\/ol>\n<p>\nIch werde versuchen, die ADSM in einem Format zu f\u00fchren, das sich ein wenig vom SDSM unterscheidet. Es werden weiterhin umfangreiche, ausf\u00fchrliche nummerierte Artikel erscheinen, und dazwischen werde ich kleine Notizen aus dem Alltag ver\u00f6ffentlichen. Ich werde versuchen, hier gegen den Perfektionismus anzuk\u00e4mpfen und nicht jeden von ihnen zu polieren. <\/p>\n<blockquote><p> Wie lustig es ist, dass man denselben Weg ein zweites Mal gehen muss.<\/p>\n<p> Zuerst musste ich selber Artikel \u00fcber Netzwerke schreiben, da es sie im russischen Internet nicht gab.<\/p>\n<p> Jetzt konnte ich kein umfassendes Dokument finden, das die Ans\u00e4tze zur Automatisierung systematisierte und anhand einfacher praktischer Beispiele die oben genannten Technologien erl\u00e4uterte.<\/p>\n<p> Vielleicht liege ich falsch, also schickt Links zu brauchbaren Ressourcen. Das wird jedoch meine Entschlossenheit, zu schreiben, nicht \u00e4ndern, denn das Hauptziel besteht ohnehin darin, selbst etwas zu lernen, und das Leben der anderen zu erleichtern ist ein angenehmer Bonus, der die Verbreitung von Wissen f\u00f6rdert.\n<\/p><\/blockquote>\n<p>Wir werden versuchen, ein mittelgro\u00dfes Rechenzentrum LAN DC zu nehmen und das gesamte Automatisierungsschema zu erarbeiten. <br \/>\nEinige Dinge werde ich praktisch zum ersten Mal zusammen mit euch machen. <\/p>\n<blockquote><p> In den hier beschriebenen Ideen und Werkzeugen werde ich nicht original sein. Dmitry Figol hat einen ausgezeichneten <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MLeiShwb7Qo&amp;list=PLSwGHYY8t8JiGI9powOXDHTAXDSs7FZqt\">Kanal mit Streams zu diesem Thema<\/a><\/noindex>. <br \/>\n Die Artikel werden in vielerlei Hinsicht mit ihnen \u00fcberschneiden. \n<\/p><\/blockquote>\n<p>In LAN DC 4 DCs, etwa 250 Switches, ein halbes Dutzend Router und ein paar Firewalls. <br \/>\nNicht Facebook, aber ausreichend, um tief \u00fcber Automatisierung nachzudenken. <br \/>\nEs gibt jedoch die Meinung, dass man, wenn man mehr als ein Ger\u00e4t hat, bereits eine Automatisierung ben\u00f6tigt. <br \/>\nEs ist tats\u00e4chlich schwer vorstellbar, dass jemand heute ohne mindestens ein paar Shell-Skripte leben kann. <br \/>\nObwohl ich geh\u00f6rt habe, dass es Firmen gibt, in denen die IP-Adressverwaltung in Excel erfolgt und jedes aus Tausenden von Netzger\u00e4ten manuell konfiguriert wird, wobei jedes eine einzigartige Konfiguration hat. Das kann man nat\u00fcrlich als moderne Kunst verkaufen, aber die Gef\u00fchle der Ingenieure werden sicher verletzt sein. <\/p>\n<h1>Ziele<\/h1>\n<p>\nJetzt werden wir m\u00f6glichst abstrakte Ziele setzen:<\/p>\n<ul>\n<li>Das Netzwerk \u2014 wie ein einziger Organismus<\/li>\n<li>Konfigurationstests<\/li>\n<li>Versionierung des Netzwerkstatus<\/li>\n<li>\u00dcberwachung und Selbstwiederherstellung von Diensten<\/li>\n<\/ul>\n<p>\nSp\u00e4ter in diesem Artikel werden wir besprechen, welche Mittel wir verwenden werden, und in den folgenden Artikeln Ziele und Mittel im Detail.<\/p>\n<h2>Das Netzwerk \u2014 wie ein einziger Organismus<\/h2>\n<p>\nDer pr\u00e4gnante Satz des Zyklus, auch wenn er auf den ersten Blick nicht besonders erheblich erscheint: <b>Wir werden das Netzwerk konfigurieren, nicht einzelne Ger\u00e4te.<\/b>. <br \/>\nIn den letzten Jahren beobachten wir einen Trend, die Netzwerke als eine einheitliche Entit\u00e4t zu betrachten, weshalb uns nun <i>Software Defined Networking<\/i>, <i>Intent Driven Networks<\/i> und <i>Autonome Netzwerke<\/i>. <br \/>\nDenn was brauchen Anwendungen global von einem Netzwerk: Konnektivit\u00e4t zwischen Punkten A und B (nun manchmal +B-\u042f) und Isolation von anderen Anwendungen und Benutzern. <\/p>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/f8b43928ccc6d487722ce7724f5c4829.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnd so besteht unsere Aufgabe in dieser Reihe darin, <b>ein System aufzubauen<\/b>, das die aktuelle Konfiguration <b>des gesamten Netzwerks<\/b>, die sich bereits in die aktuelle Konfiguration jedes Ger\u00e4ts gem\u00e4\u00df seiner Rolle und seinem Standort decomponiert, unterst\u00fctzt. <br \/>\n<b>Das System<\/b> Netzwerkmanagement bedeutet, dass wir zur \u00c4nderung auf dieses System zugreifen, und es berechnet dann den ben\u00f6tigten Zustand f\u00fcr jedes Ger\u00e4t und konfiguriert es. <br \/>\nSo minimieren wir fast auf null das manuelle Eingreifen in die CLI \u2013 alle \u00c4nderungen an den Ger\u00e4teeinstellungen oder am Netzwerkdesign m\u00fcssen formalisiert und dokumentiert werden \u2013 und erst dann auf die notwendigen Elemente des Netzwerks angewendet werden. <\/p>\n<blockquote><p> Das hei\u00dft, zum Beispiel, wenn wir entschieden haben, dass ab jetzt die Stacked Switches in Kasan zwei Netzwerke anstelle von einem ank\u00fcndigen sollten, wir<\/p>\n<ol>\n<li>Dokumentieren zuerst die \u00c4nderungen in den Systemen<\/li>\n<li>Generieren die Zielkonfiguration aller Netzwerkger\u00e4te<\/li>\n<li>Starten das Programm zur Aktualisierung der Netzwerkkonfiguration, das berechnet, was an jedem Knoten entfernt werden muss, was hinzugef\u00fcgt werden muss, und bringt die Knoten in den gew\u00fcnschten Zustand.<\/li>\n<\/ol>\n<p>\n Dabei nehmen wir manuelle \u00c4nderungen nur im ersten Schritt vor.\n<\/p><\/blockquote>\n<h2>Konfigurationstests<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.wikisummaries.org\/wiki\/Visible_Ops\">Es ist bekannt<\/a><\/noindex>, dass 80% der Probleme w\u00e4hrend der \u00c4nderung der Konfiguration auftreten - ein indirekter Beweis daf\u00fcr ist, dass w\u00e4hrend der Neujahrsferien normalerweise alles ruhig ist. <br \/>\nIch habe pers\u00f6nlich Dutzende globaler Ausf\u00e4lle aufgrund menschlicher Fehler miterlebt: falscher Befehl, im falschen Konfigurationszweig ausgef\u00fchrt, Community vergessen, MPLS global auf dem Router gel\u00f6scht, f\u00fcnf Ger\u00e4te konfiguriert und den Fehler beim sechsten nicht bemerkt, alte \u00c4nderungen, die von jemand anderem vorgenommen wurden, eingef\u00fcgt. Es gibt unz\u00e4hlige Szenarien. <\/p>\n<p>Die Automatisierung erm\u00f6glicht es uns, weniger Fehler zu machen, jedoch in gr\u00f6\u00dferem Ma\u00dfstab. So kann man nicht nur ein Ger\u00e4t, sondern das gesamte Netzwerk auf einmal lahmlegen. <\/p>\n<p>Seit jeher haben unsere Vorfahren die Richtigkeit der vorgenommenen \u00c4nderungen mit scharfem Auge, steelen Eiern und der Funktionsf\u00e4higkeit des Netzwerks nach deren Implementierung \u00fcberpr\u00fcft. <br \/>\nDie Vorfahren, deren Arbeiten zu Stillstand und katastrophalen Verlusten f\u00fchrten, hinterlie\u00dfen weniger Nachkommen und sollten mit der Zeit aussterben, aber die Evolution ist ein langsamer Prozess, und daher \u00fcberpr\u00fcfen bis heute nicht alle im Voraus die \u00c4nderungen im Labor. <br \/>\nAn der Spitze des Fortschritts stehen diejenigen, die den Prozess der Testautomatisierung der Konfiguration und deren weiterer Anwendung im Netzwerk automatisiert haben. Anders gesagt - sie haben das CI\/CD-Verfahren (<noindex><a rel=\"nofollow\" href=\"https:\/\/img.devrant.com\/devrant\/rant\/r_1535091_ErSUL.jpg\">Continuous Integration, Continuous Deployment<\/a><\/noindex>) von Entwicklern \u00fcbernommen.<br \/>\nIn einem der Teile werden wir uns ansehen, wie man dies mit einem Versionskontrollsystem, wahrscheinlich GitHub, umsetzt. <\/p>\n<blockquote><p> Sobald Sie sich mit dem Gedanken an Netzwerkintegration und -bereitstellung vertraut gemacht haben, wird Ihnen die Methode zur \u00dcberpr\u00fcfung der Konfiguration durch deren Anwendung im Produktionsnetzwerk sofort wie ein fr\u00fchmittelalterliches Unwissenheit erscheinen. Etwa so, als w\u00fcrde man mit einem Hammer auf einen Sprengkopf schlagen.\n<\/p><\/blockquote>\n<p>Eine organische Fortsetzung der Ideen \u00fcber <b>das System<\/b> Netzwerkmanagement und CI\/CD ist eine vollst\u00e4ndige Versionskontrolle der Konfiguration. <\/p>\n<h2>Versionskontrolle<\/h2>\n<p>\nWir gehen davon aus, dass bei jeglichen \u00c4nderungen, selbst den geringf\u00fcgigsten, selbst an einem unauff\u00e4lligen Ger\u00e4t, das gesamte Netzwerk von einem Zustand in einen anderen \u00fcbergeht.<br \/>\nUnd wir f\u00fchren den Befehl niemals direkt auf dem Ger\u00e4t aus, sondern \u00e4ndern den Zustand des Netzwerks. <br \/>\nLassen Sie uns diese Zust\u00e4nde Versionen nennen?<\/p>\n<p>Nehmen wir an, die aktuelle Version ist 1.0.0.<br \/>\nHat sich die IP-Adresse des Loopback-Interfaces bei einem der ToR ge\u00e4ndert? Dies ist ein Minor Release und erh\u00e4lt die Nummer 1.0.1.<br \/>\nHaben wir die Richtlinien f\u00fcr das Importieren von Routen in BGP \u00fcberarbeitet \u2013 das ist schon etwas ernster \u2013 und wir haben 1.1.0.<br \/>\nHaben wir uns entschieden, IGP abzulehnen und nur auf BGP umzusteigen \u2013 das ist bereits eine radikale \u00c4nderung im Design \u2013 2.0.0.<\/p>\n<p>Anmerkung: Verschiedene Rechenzentren k\u00f6nnen unterschiedliche Versionen haben \u2013 das Netzwerk entwickelt sich weiter, neue Ger\u00e4te werden installiert, wo neue Spine-Ebenen hinzugef\u00fcgt werden, woanders nicht usw.<\/p>\n<p>\u00dcber <noindex><a rel=\"nofollow\" href=\"https:\/\/semver.org\">semantische Versionierung<\/a><\/noindex> dar\u00fcber sprechen wir in einem separaten Artikel.<\/p>\n<p>Ich wiederhole \u2013 jede \u00c4nderung (au\u00dfer Debugging-Befehlen) ist ein Versionsupdate. \u00dcber alle Abweichungen von der aktuellen Version m\u00fcssen die Administratoren informiert werden.<\/p>\n<p>Das Gleiche gilt f\u00fcr das Zur\u00fccksetzen von \u00c4nderungen \u2013 das ist nicht das R\u00fcckg\u00e4ngigmachen der letzten Befehle, das ist kein Rollback durch das Betriebssystem des Ger\u00e4ts \u2013 das bedeutet, das gesamte Netzwerk auf eine neue (alte) Version zur\u00fcckzuf\u00fchren. <\/p>\n<h2>\u00dcberwachung und Selbstwiederherstellung von Diensten<\/h2>\n<p>\nDiese scheinbar offensichtliche Aufgabe in modernen Netzwerken erreicht ein neues Niveau.<br \/>\nBei gro\u00dfen Dienstanbietern wird oft der Ansatz verfolgt, dass ein ausgefallener Dienst sehr schnell behoben und ein neuer gestartet werden muss, anstatt herauszufinden, was passiert ist.<br \/>\n\u201eSehr\u201c bedeutet, dass von allen Seiten reichlich Monitoring eingesetzt werden muss, das innerhalb von Sekunden die geringsten Abweichungen von der Norm erkennt.<br \/>\nUnd hier sind gewohnte Metriken, wie die Auslastung des Interfaces oder die Erreichbarkeit von Knoten, nicht mehr ausreichend. Auch die manuelle \u00dcberwachung durch den Diensthabenden reicht nicht aus.<br \/>\nF\u00fcr viele Dinge muss es im Allgemeinen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.irisns.com\/self-healing-network-tomorrow-look-like\/\">Self-Healing<\/a><\/noindex> geben \u2013 die Monitorings leuchten rot und k\u00fcmmern sich selbst darum, wo es schmerzt.<\/p>\n<p>Hier \u00fcberwachen wir nicht nur einzelne Ger\u00e4te, sondern auch die Gesundheit des gesamten Netzwerks, sowohl wie bei einem Whitebox-Ansatz, was vergleichsweise klar ist, als auch bei einem Blackbox-Ansatz, was bereits komplexer ist.<\/p>\n<p>\nWas ben\u00f6tigen wir, um solche ehrgeizigen Pl\u00e4ne umzusetzen?<\/p>\n<ul>\n<li>Eine Liste aller Ger\u00e4te im Netzwerk, deren Standort, Rollen, Modelle, Softwareversionen zu haben. <br \/>\n <i>kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3.<\/i>\n <\/li>\n<li>Ein System zur Beschreibung von Netzwerkdiensten zu haben. <br \/>\n <i>IGP, BGP, L2\/3VPN, Richtlinien, ACL, NTP, SSH.<\/i><\/li>\n<li>In der Lage sein, ein Ger\u00e4t zu initiieren. <br \/>\n <i>Hostname, Mgmt IP, Mgmt Route, Benutzer, RSA-Keys, LLDP, NETCONF<\/i><\/li>\n<li>Das Ger\u00e4t konfigurieren und die Konfiguration auf die gew\u00fcnschte (einschlie\u00dflich \u00e4ltere) Version zur\u00fccksetzen.<\/li>\n<li>Die Konfiguration testen<\/li>\n<li>Regelm\u00e4\u00dfig den Zustand aller Ger\u00e4te auf Abweichungen vom aktuellen Stand \u00fcberpr\u00fcfen und die zust\u00e4ndigen Personen informieren.<br \/>\n <i>In der Nacht hat jemand leise eine Regel in die ACL hinzugef\u00fcgt.<\/i>.<\/li>\n<li>Die Funktionsf\u00e4higkeit \u00fcberwachen.<\/li>\n<\/ul>\n<p><\/p>\n<h1>Werkzeuge<\/h1>\n<p>\nDas klingt ziemlich kompliziert, um mit der Dekomposition des Projekts in Komponenten zu beginnen.<\/p>\n<p>Und es werden zehn sein:<\/p>\n<ol>\n<li>Inventarisierungssystem<\/li>\n<li>IP-Raumverwaltungssystem<\/li>\n<li>System zur Beschreibung von Netzwerkdiensten<\/li>\n<li>Ger\u00e4teinitialisierungsmechanismus<\/li>\n<li>Vendor-unabh\u00e4ngiges Konfigurationsmodell<\/li>\n<li>Vendor-spezifischer Treiber<\/li>\n<li>Mechanismus zur Bereitstellung von Konfigurationen auf ein Ger\u00e4t<\/li>\n<li>CI\/CD<\/li>\n<li>Mechanismus zur Datensicherung und Abweichungserkennung<\/li>\n<li>\u00dcberwachungssystem<\/li>\n<\/ol>\n<blockquote><p> Das ist \u00fcbrigens ein Beispiel daf\u00fcr, wie sich die Sicht auf die Ziele des Zyklus ge\u00e4ndert hat \u2013 im Entwurf der Komponenten waren es vier.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/91132e29d359a4042b213529511f6d7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn der Abbildung habe ich alle Komponenten und das Ger\u00e4t selbst dargestellt. <br \/>\n\u00dcberlappende Komponenten interagieren miteinander. <br \/>\nJe gr\u00f6\u00dfer der Block, desto mehr Aufmerksamkeit sollte diesem komponenten gewidmet werden. <\/p>\n<p><\/p>\n<h2>Komponente 1. Inventarisierungssystem<\/h2>\n<p>\nOffensichtlich wollen wir wissen, welche Ger\u00e4te wo stehen und womit sie verbunden sind. <br \/>\nDas Inventarisierungssystem ist ein wesentlicher Bestandteil jedes Unternehmens. <br \/>\nIn der Regel hat das Unternehmen f\u00fcr Netzger\u00e4te ein separates Inventarisierungssystem, das spezifischere Aufgaben erf\u00fcllt. <br \/>\nIm Rahmen der Artikelreihe werden wir dies als DCIM \u2013 Data Center Infrastructure Management bezeichnen. Obwohl der Begriff DCIM eigentlich viel mehr umfasst.<\/p>\n<p>F\u00fcr unsere Zwecke werden wir darin folgende Informationen \u00fcber das Ger\u00e4t speichern:<\/p>\n<ul>\n<li>Inventarnummer<\/li>\n<li>Bezeichnung\/Beschreibung <\/li>\n<li>Modell (<i>Huawei CE12800, Juniper QFX5120 usw.<\/i>)<\/li>\n<li>Charakteristische Parameter (<i>Platten, Schnittstellen usw.<\/i>)<\/li>\n<li>Rolle (<i>Leaf, Spine, Border Router usw.<\/i>)<\/li>\n<li>Standort (<i>Region, Stadt, Rechenzentrum, Rack, Einheit<\/i>)<\/li>\n<li>Interkonnekte zwischen Ger\u00e4ten<\/li>\n<li>Netzwerktopologie<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/fac708b1bf3640a943f90247bff8216e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs ist ganz klar, dass wir das alles selbst wissen wollen. <br \/>\nAber wird das bei der Automatisierung helfen? <br \/>\nNat\u00fcrlich. <br \/>\nZum Beispiel wissen wir, dass in diesem Rechenzentrum auf Leaf-Switches, wenn es Huawei ist, ACLs zur Filterung bestimmter Datenstr\u00f6me auf VLAN angewendet werden m\u00fcssen, w\u00e4hrend dies bei Juniper auf Einheit 0 des physischen Interfaces gelten muss. <br \/>\nOder wir m\u00fcssen einen neuen Syslog-Server auf allen Border-Routern der Region installieren.<\/p>\n<p>Darin werden wir virtuelle Netzger\u00e4te speichern, wie zum Beispiel virtuelle Router oder Routen-Reflektoren. Wir k\u00f6nnen DNS-Server, NTP, Syslog und alles hinzuf\u00fcgen, was irgendwie mit dem Netzwerk zu tun hat. <\/p>\n<h2>Komponente 2. IP-Raum-Management-System<\/h2>\n<p>\nJa, auch heute gibt es Gruppen von Menschen, die in einer Excel-Datei die Pr\u00e4fixe und IP-Adressen verwalten. Aber der moderne Ansatz ist dennoch eine Datenbank mit einem Frontend auf nginx\/apache, API und umfassenden Funktionen zur Verwaltung von IP-Adressen und Netzwerken mit Trennung in VRF.<br \/>\nIPAM \u2013 IP-Adressverwaltung. <\/p>\n<p>F\u00fcr unsere Aufgaben werden wir darin folgende Informationen speichern:<\/p>\n<ul>\n<li>VLAN<\/li>\n<li>VRF<\/li>\n<li>Netze\/Subnetze<\/li>\n<li>IP-Adressen<\/li>\n<li>Zuweisung von Adressen zu Ger\u00e4ten, Netzwerken zu Standorten und VLAN-Nummern<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/6d476d48f95ed663d84cae052a86d129.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs ist klar, dass wir sicherstellen wollen, dass, wenn wir eine neue IP-Adresse f\u00fcr das Loopback des ToR zuweisen, wir nicht dar\u00fcber stolpern, dass sie bereits jemandem zugewiesen wurde. Oder dass wir denselben Pr\u00e4fix zweimal an verschiedenen Punkten des Netzwerks verwendet haben. <br \/>\nAber wie hilft das bei der Automatisierung? <br \/>\nEinfach. <br \/>\nWir fragen im System nach dem Pr\u00e4fix mit der Rolle Loopbacks, das verf\u00fcgbare IP-Adressen zur Zuweisung enth\u00e4lt \u2013 wenn es gefunden wird, weisen wir die Adresse zu, wenn nicht, bitten wir um die Erstellung eines neuen Pr\u00e4fixes. <br \/>\nOder bei der Erstellung der Ger\u00e4tkonfiguration k\u00f6nnen wir aus demselben System erfahren, in welchem VRF das Interface sein sollte. <br \/>\nUnd beim Start eines neuen Servers geht das Skript ins System, erf\u00e4hrt, welcher Server-Switch, welcher Port und welches Subnetz dem Interface zugewiesen sind \u2013 aus diesem wird die Serveradresse zugewiesen. <\/p>\n<p>\nEs liegt nahe, DCIM und IPAM in ein System zu integrieren, um Funktionen nicht zu duplizieren und zwei \u00e4hnliche Entit\u00e4ten zu verwalten. <br \/>\nDas werden wir tun. <\/p>\n<h2>Komponente 3. System zur Beschreibung von Netzwerkdiensten<\/h2>\n<p>\nW\u00e4hrend die ersten beiden Systeme Variablen speichern, die noch irgendwie verwendet werden m\u00fcssen, beschreibt das dritte, wie jedes Ger\u00e4t f\u00fcr seine Rolle konfiguriert sein sollte. <br \/>\nEs gibt zwei verschiedene Arten von Netzwerkdiensten: <\/p>\n<ul>\n<li>Infrastrukturdienstleistungen<\/li>\n<li>Kundendienste.<\/li>\n<\/ul>\n<p>Die ersten sollen die grundlegende Konnektivit\u00e4t und Ger\u00e4teverwaltung sicherstellen. Dazu geh\u00f6ren VTY, SNMP, NTP, Syslog, AAA, Routing-Protokolle, CoPP usw. <br \/>\nDie zweiten bieten einen Dienst f\u00fcr den Kunden an: MPLS L2\/L3VPN, GRE, VXLAN, VLAN, L2TP usw. <br \/>\nEs gibt nat\u00fcrlich auch Grenzf\u00e4lle \u2013 wo geh\u00f6ren MPLS LDP, BGP hin? Und auch Routing-Protokolle k\u00f6nnen f\u00fcr Kunden verwendet werden. Aber das ist nicht entscheidend. <\/p>\n<p>Beide Arten von Diensten lassen sich in Konfigurationsprimitive unterteilen:<\/p>\n<ul>\n<li>physische und logische Schnittstellen (Tag\/Antag, mtu)<\/li>\n<li>IP-Adressen und VRF (IP, IPv6, VRF)<\/li>\n<li>ACLs und Verkehrspolitiken<\/li>\n<li>Protokolle (IGP, BGP, MPLS)<\/li>\n<li>Routing-Politiken (Pr\u00e4fixlisten, Communities, ASN-Filter).<\/li>\n<li>Dienstleistungen (SSH, NTP, LLDP, Syslog...)<\/li>\n<li>usw.<\/li>\n<\/ul>\n<p>\nWie genau wir das machen werden, wei\u00df ich noch nicht. Wir kl\u00e4ren das in einem separaten Artikel.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/092bc3a4b875f4a6422ee13fb580ba4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEin wenig n\u00e4her am Leben k\u00f6nnten wir beschreiben, dass<br \/>\nDer Leaf-Switch sollte BGP-Sitzungen mit allen angeschlossenen Spine-Switches haben, die angeschlossenen Netzwerke in den Prozess importieren und nur Netzwerke aus einem bestimmten Pr\u00e4fix von Spine-Switches annehmen. Die CoPP IPv6 ND auf 10 pps begrenzen usw. <br \/>\nDie Spine-Switches halten ihrerseits Sitzungen mit allen angeschlossenen Leaf-Switches und fungieren als Route-Reflektoren, wobei sie nur Routen bestimmter L\u00e4nge und mit einer bestimmten Community von ihnen annehmen.<\/p>\n<h2>Komponente 4. Mechanismus zur Initialisierung des Ger\u00e4ts<\/h2>\n<p>\nUnter diesem Titel b\u00fcndele ich eine Vielzahl von Aktionen, die stattfinden m\u00fcssen, damit das Ger\u00e4t auf den Radaren erscheint und remote erreichbar ist.<\/p>\n<ol>\n<li>Das Ger\u00e4t im Inventarsystem erfassen.<\/li>\n<li>Eine IP-Adresse f\u00fcr die Verwaltung zuweisen.<\/li>\n<li>Zugriff auf das Ger\u00e4t einrichten: <br \/>\nHostname, IP-Adresse der Verwaltung, Route zum Verwaltungsnetzwerk, Benutzer, SSH-Schl\u00fcssel, Protokolle \u2014 telnet\/SSH\/NETCONF<\/li>\n<\/ol>\n<p>Es gibt drei Ans\u00e4tze:<\/p>\n<ul>\n<li>Alles komplett manuell. Das Ger\u00e4t wird zum Stand gebracht, wo ein gew\u00f6hnlicher Mensch es in die Systeme einpflegt, sich \u00fcber die Konsole verbindet und es konfiguriert. Kann bei kleinen statischen Netzwerken funktionieren.<\/li>\n<li>ZTP \u2014 Zero Touch Provisioning. Die Hardware kommt an, wird aufgestellt, erh\u00e4lt \u00fcber DHCP eine Adresse, geht zu einem speziellen Server und konfiguriert sich selbst. <\/li>\n<li>Infrastruktur von Konsolenservern, wo die erste Konfiguration \u00fcber den Konsolenport im automatischen Modus erfolgt.<\/li>\n<\/ul>\n<p>\u00dcber alle drei werden wir in einem separaten Artikel sprechen.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/6d8d061e53b508edbbcbd98fe496ca91.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponente 5. Herstellerunabh\u00e4ngiges Konfigurationsmodell<\/h2>\n<p>\nBisher waren alle Systeme aus unterschiedlichen Puzzlest\u00fccken zusammengesetzt, die eine variable und deklarative Beschreibung dessen geben, was wir im Netzwerk sehen m\u00f6chten. Doch irgendwann muss man sich mit der Konkretheit auseinandersetzen. <br \/>\nIn diesem Stadium werden f\u00fcr jedes spezifische Ger\u00e4t Primitive, Dienste und Variablen in ein Konfigurationsmodell integriert, das die vollst\u00e4ndige Konfiguration des spezifischen Ger\u00e4ts beschreibt, allerdings in einer herstellerunabh\u00e4ngigen Weise. <br \/>\nWas bringt dieser Schritt? Warum nicht sofort die Konfiguration des Ger\u00e4ts erstellen, die man einfach hochladen kann? <br \/>\nTats\u00e4chlich erm\u00f6glicht dies die L\u00f6sung von drei Aufgaben:<\/p>\n<ol>\n<li> Sich nicht an ein bestimmtes Interaktionsinterface mit dem Ger\u00e4t anpassen. Egal ob CLI, NETCONF, RESTCONF, SNMP \u2013 das Modell wird gleich sein.<\/li>\n<li> Die Anzahl der Vorlagen\/Skripte nicht nach der Anzahl der Anbieter im Netzwerk zu gestalten, und im Falle einer Design\u00e4nderung dasselbe an mehreren Stellen anzupassen.<\/li>\n<li> Die Konfiguration vom Ger\u00e4t (Backup) laden, sie in genau dasselbe Modell zerlegen und die Zielkonfiguration direkt mit der bestehenden vergleichen, um die Differenz zu berechnen und einen Konfigurationspatch vorzubereiten, der nur die Teile \u00e4ndert, die notwendig sind, oder um Abweichungen zu identifizieren.<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/a154c42ebe7978fcc5b2ce4f235516c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Ergebnis dieser Phase ist eine anbieterunabh\u00e4ngige Konfiguration.<\/p>\n<h2>Komponente 6. Anbieter-spezifischer Treiber<\/h2>\n<p>\nMan sollte sich keine Illusionen machen, dass man Cisco irgendwann genauso konfigurieren kann wie Juniper, indem man einfach identische Aufrufe an sie sendet. Trotz des wachsenden Interesses an Whiteboxes und der Unterst\u00fctzung von NETCONF, RESTCONF und OpenConfig unterscheidet sich der spezifische Inhalt, der durch diese Protokolle bereitgestellt wird, von Anbieter zu Anbieter, und das ist eines ihrer Wettbewerbseigenschaften, die sie so leicht nicht aufgeben werden. <br \/>\nDas ist ungef\u00e4hr das gleiche wie OpenContrail und OpenStack, die ein RestAPI als ihren NorthBound-Interface haben, aber v\u00f6llig unterschiedliche Aufrufe erwarten. <\/p>\n<p>Also muss das anbieterunabh\u00e4ngige Modell im f\u00fcnften Schritt die Form annehmen, die es f\u00fcr die Hardware ben\u00f6tigt. <br \/>\nUnd hier sind alle Mittel recht (nicht): CLI, NETCONF, RESTCONF, SNMP einfach schrecklich.<\/p>\n<p>Deshalb brauchen wir einen Treiber, der das Ergebnis des vorherigen Schrittes in das erforderliche Format des spezifischen Anbieters \u00fcbertr\u00e4gt: eine Menge CLI-Befehle, XML-Struktur.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/6ed8e935183075fda60a209477f84937.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponente 7. Mechanismus zur Bereitstellung der Konfiguration auf dem Ger\u00e4t<\/h2>\n<p>\nDie Konfiguration haben wir generiert, aber sie muss auch auf die Ger\u00e4te gebracht werden \u2013 und offenbar nicht manuell. <br \/>\n<b>Zun\u00e4chst einmal<\/b>, stehen wir vor der Frage, welches Transportmittel wir nutzen werden? Die Auswahl ist heutzutage bereits nicht klein:<\/p>\n<ul>\n<li>CLI (telnet, ssh)<\/li>\n<li>SNMP<\/li>\n<li>NETCONF<\/li>\n<li>RESTCONF<\/li>\n<li>REST API<\/li>\n<li>OpenFlow (obwohl es aus der Liste herausf\u00e4llt, da es ein Weg ist, FIB und nicht Konfigurationen zu liefern)<\/li>\n<\/ul>\n<p>Lassen Sie uns hier die Punkte auf den i setzen. CLI \u2013 das ist Legacy. SNMP\u2026 \u00c4hm, \u00c4hm.<br \/>\nRESTCONF \u2013 ist noch ein unbekanntes Wesen, REST API wird von fast niemandem unterst\u00fctzt. Daher konzentrieren wir uns im Zyklus auf NETCONF.<\/p>\n<p>Tats\u00e4chlich haben wir uns, wie der Leser bereits erkannt hat, zu diesem Zeitpunkt bereits auf die Benutzeroberfl\u00e4che geeinigt \u2013 das Ergebnis des vorherigen Schrittes liegt bereits im Format der gew\u00e4hlten Benutzeroberfl\u00e4che vor.<\/p>\n<p><b>Zweitens<\/b>, und welche Werkzeuge werden wir dabei verwenden?<br \/>\nHier gibt es ebenfalls eine gro\u00dfe Auswahl:<\/p>\n<ul>\n<li>Ein selbstgeschriebenes Skript oder eine Plattform. Bewaffnen wir uns mit ncclient und asyncIO und machen alles selbst. Was hindert uns daran, das Deploymentsystem von Grund auf neu zu erstellen?<\/li>\n<li>Ansible mit seiner umfangreichen Bibliothek von Netzmodulen.<\/li>\n<li>Salt, das nur begrenzte Netzwerkfunktionen bietet und mit Napalm verbunden ist.<\/li>\n<li>Eigentlich Napalm, der ein paar Anbieter kennt und das war's, auf Wiedersehen.<\/li>\n<li>Nornir \u2013 ein weiteres Tierchen, das wir in Zukunft aufschneiden werden.<\/li>\n<\/ul>\n<p>Hier ist noch kein Favorit gew\u00e4hlt \u2013 wir werden sie testen.<\/p>\n<p>Was ist hier noch wichtig? Die Auswirkungen der Anwendung der Konfiguration. <br \/>\nOb erfolgreich oder nicht. Ob weiterhin Zugriff auf das Ger\u00e4t besteht oder nicht. <br \/>\nEs scheint, dass hier ein Commit mit Best\u00e4tigung und Validierung dessen, was ins Ger\u00e4t geladen wurde, helfen k\u00f6nnte. <br \/>\nDas schr\u00e4nkt in Kombination mit der richtigen Implementierung von NETCONF den Kreis der geeigneten Ger\u00e4te erheblich ein \u2013 normale Commits unterst\u00fctzen nicht viele Hersteller. Aber das ist einfach eine der Voraussetzungen in <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81_%D0%BF%D1%80%D0%B5%D0%B4%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F\">RFP<\/a><\/noindex>. Schlie\u00dflich macht sich niemand Sorgen, dass kein einziger russischer Anbieter die Bedingung von 32*100GE-Schnittstellen erf\u00fcllt. Oder tut er das?<\/p>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/59d8ad3b55b9c107642550bb06fc759a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Komponente 8. CI\/CD<\/h2>\n<p>\nZu diesem Zeitpunkt haben wir bereits die Konfiguration f\u00fcr alle Ger\u00e4te im Netzwerk vorbereitet.<br \/>\nIch schreibe \u201ef\u00fcr alle\u201c, weil wir \u00fcber die Versionierung des Netzwerkstatus sprechen. Und selbst wenn es n\u00f6tig ist, nur die Einstellungen eines einzelnen Switches zu \u00e4ndern, werden die \u00c4nderungen f\u00fcr das gesamte Netzwerk ber\u00fccksichtigt. Offensichtlich k\u00f6nnen sie dabei f\u00fcr die meisten Knoten null sein.<\/p>\n<p>Aber, wie bereits weiter oben gesagt, sind wir keine Barbaren, die alles auf einmal in die Produktion schicken. <br \/>\nDie generierte Konfiguration muss zuerst durch die CI\/CD-Pipeline laufen.<\/p>\n<blockquote><p>CI\/CD steht f\u00fcr Continuous Integration, Continuous Deployment. Dies ist ein Ansatz, bei dem das Team nicht einmal alle sechs Monate ein neues gro\u00dfen Update ver\u00f6ffentlicht, das das alte vollst\u00e4ndig ersetzt, sondern regelm\u00e4\u00dfig inkrementell (Deployment) neue Funktionen in kleinen Portionen einf\u00fchrt, die jeweils umfassend auf Kompatibilit\u00e4t, Sicherheit und Funktionalit\u00e4t (Integration) getestet werden.\n<\/p><\/blockquote>\n<p>Daf\u00fcr haben wir ein Versionskontrollsystem, das die \u00c4nderungen der Konfiguration \u00fcberwacht, ein Labor, in dem gepr\u00fcft wird, ob der Kundenservice nicht ausf\u00e4llt, ein \u00dcberwachungssystem, das diese Tatsache kontrolliert, und der letzte Schritt ist die Bereitstellung der \u00c4nderungen im Produktionsnetzwerk.<\/p>\n<p>Mit Ausnahme der Debugging-Commands m\u00fcssen alle \u00c4nderungen im Netzwerk durch das CI\/CD-Pipeline gehen \u2013 das ist unser Garant f\u00fcr ein ruhiges Leben und eine lange, erfolgreiche Karriere.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/101a5ff87c7a9c7b6776aca9daf762a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponente 9. Backup- und Abweichungserkennungssystem<\/h2>\n<p>\nNun, \u00fcber Backups muss man nicht oft reden. <br \/>\nWir werden sie einfach nach Cron oder bei \u00c4nderungen der Konfiguration in Git speichern.<\/p>\n<p>Die zweite H\u00e4lfte ist interessanter \u2013 jemand muss auf diese Backups achten. In einigen F\u00e4llen muss dieser jemand alles wiederherstellen, wie es war, und in anderen F\u00e4llen muss er jemandem Bescheid geben, dass etwas nicht stimmt. <br \/>\nWenn beispielsweise ein neuer Benutzer aufgekommen ist, der nicht in den Variablen vermerkt ist, muss er vom Hack ferngehalten werden. Und wenn eine neue Firewall-Regel hinzugef\u00fcgt wurde \u2013 besser nicht ber\u00fchren, vielleicht hat jemand einfach das Debugging eingeschaltet oder ein neuer Dienst wurde, ungeschickt, nicht gem\u00e4\u00df den Vorschriften hinzugef\u00fcgt, und schon sind die Leute darauf gesto\u00dfen.<\/p>\n<p>Von einer gewissen kleinen Delta im Ma\u00dfstab des gesamten Netzwerks werden wir dennoch nicht entkommen, trotz aller Automatisierungssysteme und der eisernen Hand des Managements. F\u00fcr das Debugging der Probleme wird dennoch niemand die Konfiguration in Systeme eingeben. Zumal die Modellierung der Konfiguration dies vielleicht sogar nicht vorschreibt. <\/p>\n<blockquote><p>Zum Beispiel eine Firewall-Regel zur Z\u00e4hlung der Pakete an eine bestimmte IP-Adresse, um ein Problem zu lokalisieren \u2013 eine ganz gew\u00f6hnliche tempor\u00e4re Konfiguration.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/390f78139d336f1fc2c60573bccfe76c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponente 10. \u00dcberwachungssystem<\/h2>\n<p>\nZuerst wollte ich das Thema \u00dcberwachung nicht behandeln \u2013 es ist schlie\u00dflich umfangreich, umstritten und kompliziert. Aber im Laufe der Dinge stellte sich heraus, dass es ein unverzichtbarer Teil der Automatisierung ist. Und man kann nicht einfach daran vorbeigehen, auch nicht ohne praktische Erfahrungen. <\/p>\n<p>Um die \u00dcberlegung fortzusetzen \u2013 es ist ein organischer Teil des CI\/CD-Prozesses. Nach der Bereitstellung der Konfiguration im Netzwerk m\u00fcssen wir in der Lage sein zu bestimmen, ob alles jetzt in Ordnung ist. <br \/>\nUnd es geht nicht nur um Grafiken zur Nutzung von Schnittstellen oder die Verf\u00fcgbarkeit von Knoten, sondern um subtilere Dinge \u2013 das Vorhandensein von notwendigen Routen, Attributen darauf, der Anzahl von BGP-Sitzungen, OSPF-Nachbarn, der End-to-End-Funktionalit\u00e4t der dar\u00fcber liegenden Dienste.<br \/>\nHaben die Syslogs auf dem externen Server aufgeh\u00f6rt zu entstehen, oder ist der SFlow-Agent ausgefallen? Sind die Drops in den Warteschlangen gestiegen, oder ist die Konnektivit\u00e4t zwischen irgendeinem Pr\u00e4fix-Paar gest\u00f6rt?<\/p>\n<p>In einem separaten Artikel werden wir auch dar\u00fcber nachdenken.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/08aeee4939081abb21e61abadd0ce5de.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Automatisierung f\u00fcr die Kleinsten. Teil Null. Planung\" src=\"\/wp-content\/uploads\/2019\/07\/13c186070c85fd00f7b6923df154f1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h1>Fazit<\/h1>\n<p>\nAls Grundlage w\u00e4hlte ich eines der modernen Designs f\u00fcr Rechenzentrumsnetze \u2013 L3 Clos Fabric mit BGP als Routingprotokoll.<br \/>\nWir werden unser Netzwerk diesmal auf Juniper aufbauen, da die JunOs-Oberfl\u00e4che jetzt einfach ist.<\/p>\n<p>Wir erschweren uns das Leben mit der Verwendung ausschlie\u00dflich von Open-Source-Tools und einem Multivendor-Netz \u2013 daher werde ich neben Juniper im Laufe der Zeit noch einen weiteren Gl\u00fccklichen ausw\u00e4hlen.<\/p>\n<p>Der Plan der n\u00e4chsten Ver\u00f6ffentlichungen sieht folgenderma\u00dfen aus:<br \/>\nZuerst werde ich \u00fcber virtuelle Netzwerke berichten. Erstens, weil ich das m\u00f6chte, und zweitens, weil das Design des Infrastruktur-Netzwerks sonst nicht wirklich verst\u00e4ndlich sein wird.<br \/>\nDann geht es richtig um das Design des Netzwerks: Topologie, Routing, Richtlinien.<br \/>\nWir werden eine Laborumgebung aufbauen.<br \/>\nWir werden dar\u00fcber nachdenken und vielleicht das Ger\u00e4t im Netzwerk in Betrieb nehmen.<br \/>\nUnd dann \u00fcber jede Komponente in intimen Details.<\/p>\n<p>Und ja, ich verspreche nicht, diesen Zyklus mit einer eleganten L\u00f6sung abzuschlie\u00dfen. \ud83d\ude42<\/p>\n<h5>N\u00fctzliche Links<\/h5>\n<p><\/p>\n<ul>\n<li>Bevor wir in die Serie eintauchen, ist es sinnvoll, das Buch von Natalia Samoylenko zu lesen, <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.gitbook.io\/pyneng\/\">Python f\u00fcr Netzwerkingenieure.<\/a><\/noindex>Und vielleicht auch zu absolvieren. <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.github.io\/pyneng-online\/\">einen Kurs<\/a><\/noindex>.<\/li>\n<li>Es wird auch hilfreich sein, \u00fcber das Design von Rechenzentrums-Fabriken von Facebook zu lesen, verfasst von Peter Lapukhoff. <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7938\">RFC<\/a><\/noindex> Wie das Overlay-basierte SDN funktioniert, zeigt Ihnen die Dokumentation zur Architektur<\/li>\n<li>Die Dokumentation zur Architektur gibt Ihnen einen \u00dcberblick dar\u00fcber, wie Overlay-SDN funktioniert. <noindex><a rel=\"nofollow\" href=\"https:\/\/tungstenfabric.github.io\/website\/Tungsten-Fabric-Architecture.html\">Tungsten Fabric<\/a><\/noindex> Roman Gorge. F\u00fcr Kommentare und Korrekturen.<\/li>\n<\/ul>\n<h5>Danke<\/h5>\n<p>\nArtem Tschernobaj. F\u00fcr KDPV.<br \/>\n\ud83e\udd47Automatisierung f\u00fcr die Kleinsten. Nullte Folge. Planung | ProHoster<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/453516\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c. \u0414\u043e\u043b\u0433\u0438\u0435 \u0433\u043e\u0434\u044b \u043d\u0430\u0448 \u0431\u0440\u0430\u0442 \u0441\u0442\u0440\u0430\u0434\u0430\u043b \u043e\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0443\u0442\u0438\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u043a\u0440\u0435\u0449\u0438\u0432\u0430\u043b \u043f\u0430\u043b\u044c\u0446\u044b \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c \u0438 \u043d\u0435\u0434\u043e\u0441\u044b\u043f\u0430\u043b \u0438\u0437-\u0437\u0430 \u043d\u043e\u0447\u043d\u044b\u0445 \u0440\u043e\u043b\u0431\u044d\u043a\u043e\u0432. \u041d\u043e \u0442\u0451\u043c\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u0435\u0446. \u042d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u044f \u043d\u0430\u0447\u043d\u0443 \u0441\u0435\u0440\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u043e \u0445\u043e\u0434\u0443 \u0434\u0435\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0441 \u044d\u0442\u0430\u043f\u0430\u043c\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0441 RestAPI, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26891,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35972","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Automatisierung f\u00fcr die Kleinsten. Nullte Teil. Planung | ProHoster","description":"Die SDSM ist zu Ende gegangen, aber das unkontrollierte Verlangen zu schreiben bleibt bestehen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster","og:description":"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:08:54+00:00","article:modified_time":"2019-10-31T19:08:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35972","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 01:28:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 09:58:22","updated":"2026-01-22 01:28:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/35972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=35972"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/35972\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/26891"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=35972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=35972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=35972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}