Dies ist der erste Tagesartikel von NetOpsCoding AdventCalendar2016. Es ist noch Platz vorhanden. Wenn also jemand einen Artikel schreiben kann, machen Sie mit! NetOpsCoding Advent Calendar 2016
Es muss nicht schwierig sein. Es kann ein emotionaler Artikel voller Leidenschaft sein. Es spielt keine Rolle, ob es sich um einen einfachen und kleinen Tipp handelt. (Eher kleine Tipps sind erwünscht). Wenn jemand mit dem Netzwerkbetrieb frustriert ist, würde ich mich als Person in NetOps Coding sehr freuen, wenn Sie den ersten Schritt der Automatisierung als einen der Auslöser nehmen könnten.
Wir haben Juniper eingeladen, dies am 1. Dezember bei einer Veranstaltung namens "Juniper Cloud Builder Community 2016" bekannt zu geben.
Was den Inhalt der Ankündigung betrifft, PyEZ und JSNAPy, die Juniper als offene Software veröffentlicht hat ) Wird verwendet, um zu überprüfen, ob es am tatsächlichen Netzwerkbetriebsstandort des ISP verwendet werden kann.
Die für die Präsentation verwendeten Materialien finden Sie hier. Möglichkeit des Netzwerkbetriebs der nächsten Generation mit JSNAPy und PyEZ
Da die Ankündigung 25 Minuten dauerte, konnte ich die Details der Tools und des Beispielcodes kaum vorstellen, daher werde ich die Details in diesem Blog vorstellen.
Zunächst einmal sind PyEZ und JSNAPy Software zur Automatisierung der Routerkonfiguration und sehr leistungsfähige Tools. Software kann fast das gleiche Verfahren wie manuelle Arbeit ersetzen.
Als ich die Beispiele und das Know-how schrieb, war die Menge zu groß, deshalb schreibe ich den Blog in den folgenden vier Teilen.
Schließlich habe ich das folgende Demo-Programm gemacht. Die rechte Seite des Bildschirms ist das Zielgerät Firefly (die obere rechte Seite Firefly1 ist das Einstellungsziel) und die linke Seite des Bildschirms ist das Automatisierungswerkzeug. Eingeführt in "Teil 4: Automatisieren der ISP-Setup-Arbeit mit PyEZ und JSNAPy".
PyEZ ist eine Python-Bibliothek zum Neukonfigurieren von JUNOS-Routern. Zusätzlich zum Laden und Festschreiben der Konfiguration hat sie genau die gleichen Funktionen wie das manuelle Einstellen des Routers.
Bei der Automatisierung von Router-Einstellungen gibt es viele Anforderungen, z. B. "Ich möchte automatische Einstellungen mit genau dem gleichen Verfahren wie manuelle Einstellungen durchführen". Daher bin ich sehr dankbar, dass "ich genau das Gleiche tun kann wie manuelle Einstellungen, ohne sie zu beeinträchtigen". .. (Unerwarteterweise gibt es viele Automatisierungstools, bei denen die verfügbaren Funktionen und Einstellungsmethoden eingeschränkt sind.)
JSNAPy ist ein Tool, das den Status des JUNOS-Routers als Snapshot verwendet und verwaltet und feststellt, ob er den vordefinierten Bedingungen entspricht. Einfach ausgedrückt, JSNAPy erleichtert die Implementierung von Testtools. "Gibt" Bestanden "zurück, wenn die Schnittstelle xe-0 / 0/0 aktiv ist." "Fehlgeschlagen", wenn die Routeninformationen von Zustand 2 für Zustand 1 stärker als erwartet ansteigen. Sie können "pass") "return" sagen.
Das Schreiben von Tests ist sehr leistungsfähig bei der Automatisierung der Routerkonfiguration. Es versteht sich von selbst, dass es wichtig ist, zu bestätigen, dass "der Status nach der Einstellung normal funktioniert" in der Router-Einstellungsarbeit. Da der Service-Impact-Bereich des Routers groß ist, ist schwer zu erkennen, ob "die Einstellung fehlgeschlagen ist und das Netzwerk verschwunden ist".
Die Automatisierung dieses Normalisierungsprozesses ist jedoch eine sehr, sehr mühsame Aufgabe. "Definieren Sie für alle von der Router-CLI eingegebenen Router-Befehle alle Muster der Ausgabeergebnisse, die vom Router zurückgegeben werden können, extrahieren Sie die Zielzeichenfolge mit einem regulären Ausdruck und bestimmen Sie, ob sie den vordefinierten Bedingungen entspricht. Das ist alles, was zu sagen ist: "Die Anzahl der Muster, die zum Zeitpunkt eines Fehlers ausgegeben werden können, ist riesig und kann nicht definiert werden." "Das Ausgabeergebnis unterscheidet sich geringfügig je nach Modell / Betriebssystemversion." "Das Programm ist ein Stapel regulärer Ausdrücke." Es gibt viele Hindernisse wie "Es wird für niemanden außer dem Implementierer unmöglich, es aufrechtzuerhalten", und es bleibt keine andere Wahl, als es mit taktischen Operationen auf menschlichem Meer zu überwinden. Wenn Sie an den Schwierigkeiten interessiert sind, die damit verbunden sind, lesen Sie bitte, wie es auf @ stereocats Blog vorgestellt wurde. (Wenn ich es mir nur ansehe, tut mir der Magen weh.) Schlechtes Know-how für CLI-basierte NW-Automatisierung
Durch die Verwendung von JSNAPy können Sie die Probleme bei der Implementierung von Testtools beseitigen. Daher bin ich Ihnen sehr dankbar. Es ist schwer zu sagen, ob alle zuvor erwähnten Aufgaben einfacher sein werden, aber ich bin sicher, dass die meisten einfacher sein werden.
Das Fehlen einer Router-Version, die dem Test-Tool Serverspec in Bezug auf Server entspricht, ist einer der Hauptfaktoren, die es heute schwierig machen, den Netzwerkbetrieb zu automatisieren. Ich freue mich sehr auf das Erscheinen eines Testtools wie dieses JSNAPy.
Bevor ich PyEZ und JSNAPy im Detail vorstelle, möchte ich ein wenig über Automatisierung sprechen.
Einige Organisationen, die das Netzwerk betreiben, kritisieren möglicherweise, dass "die Automatisierung mit dem dedizierten Juniper-Tool nicht halb so effektiv ist, wenn es nicht von den Routern anderer Unternehmen betrieben werden kann". Das ist genau richtig. Die oben vorgestellten Tools funktionieren nur mit JUNOS-Routern. Natürlich gibt es in meiner Organisation viele andere Netzwerkgeräte als Juniper. Natürlich können die oben genannten Juniper-Tools nicht alle Geräte unterstützen.
Bei der Automatisierung des Netzwerkbetriebs ist es derzeit jedoch eine sehr schwierige Aufgabe, darauf zu zielen, dass alle Anbieter plötzlich reagieren. Dies liegt daran, dass derzeit nicht für alle Produkte mit mehreren Anbietern viel offene Software verfügbar ist. (Im Moment scheinen APIs von Drittanbietern wie Ansible und NAPALM diese Position anzustreben, aber Sie müssen vorsichtig sein, da jedes Gerät die funktionalen Anforderungen erfüllt, die Sie automatisieren möchten.)
Ich denke, dass jeder seine eigenen Ideen zur Realisierung von Support für mehrere Anbieter hat, daher werde ich hier nicht darauf eingehen, aber als meine persönliche Idee werde ich im Moment mit der Prüfung und Verifizierung gemäß dem folgenden Ablauf fortfahren. Ich denke, dass es gut vorankommen wird.
Wie oben erwähnt, stelle ich mir vor, dass die Implementierung von herstellerkompatiblen Tools voranschreiten wird, wenn wir mit dem Teil beginnen können, der einfach zu automatisieren ist, und schließlich einen Fluss in der Nähe der Open-Source-Softwareentwicklung erstellen können. Tatsächlich gibt es auch ein Tool namens NAPALM als herstellerkompatible Bibliothek, das mit solchen Ideen implementiert wird.
NAPALM wurde in früheren Blogs eingeführt. Schauen Sie also bitte vorbei, wenn Sie interessiert sind.
Basierend auf dieser Idee in meinem Fall
Mit dieser Idee treiben wir die Politik der automatisierten Entwicklung voran.
Obwohl die Einführung lang geworden ist, werde ich ab dem nächsten Mal die spezifische Verwendung von PyEZ und JSNAPy vorstellen.
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 2: Ich habe versucht, PyEZ zu verwenden
Recommended Posts