Hallo, Habra!
In diesem Artikel möchten wir über die Automatisierung der Netzwerk-Infrastruktur sprechen. Es wird ein Arbeitsnetzwerkschema vorgestellt, das in einem kleinen, aber sehr stolzen Unternehmen funktioniert. Alle Übereinstimmungen mit realer Netzwerktechnologie sind zufällig. Wir werden einen Fall betrachten, der in diesem Netzwerk aufgetreten ist und der zu einem längeren Geschäftsstopp und erheblichen finanziellen Verlusten führen konnte. Die Lösung dieses Falls passt sehr gut zur Konzeption der „Automatisierung der Netzwerk-Infrastruktur“. Mit Hilfe von Automatisierungstools zeigen wir, wie man komplexe Aufgaben effizient in kurzer Zeit lösen kann, und überlegen, warum es sinnvoller ist, diese Aufgaben genau so und nicht anders zu lösen (über die Konsole).
Haftungsausschluss
Die Hauptwerkzeuge für die Automatisierung sind bei uns Ansible (als Automatisierungswerkzeug) und Git (als Speicher für die Ansible-Playbooks). Zunächst möchten wir klarstellen, dass dies kein Einführungstext ist, in dem wir über die Logik von Ansible oder Git sprechen und grundlegende Dinge erklären (zum Beispiel, was Rollen, Module, Inventardateien und Variablen in Ansible sind oder was passiert, wenn man die Befehle git push oder git commit eingibt). Es geht nicht darum, wie man in Ansible übt oder NTP oder SMTP auf Geräten einrichtet. Vielmehr geht es darum, wie man schnell und idealerweise fehlerfrei Netzwerkprobleme löst. Außerdem sollte man ein gutes Verständnis dafür haben, wie Netzwerke funktionieren, insbesondere was der TCP/IP-Protokollstapel, OSPF und BGP sind. Die Auswahl von Ansible und Git wird ebenfalls ausgeklammert. Falls Sie sich noch für eine konkrete Lösung entscheiden müssen, empfehlen wir dringend das Buch „Network Programmability and Automation. Skills for the Next-Generation Network Engineer“ von Jason Edelman, Scott S. Lowe und Matt Oswalt.
Jetzt zum Thema.
Aufgabenstellung
Stellen Sie sich die folgende Situation vor: Es ist 3 Uhr nachts, Sie schlafen fest und träumen. Ein Anruf auf dem Telefon. Der technische Direktor ruft an:
— Ja?
— ###, ####, #####, der Cluster von Firewalls ist abgestürzt und geht nicht wieder hoch!!!
Sie reiben sich die Augen, versuchen, das Geschehene zu begreifen und sich vorzustellen, wie so etwas überhaupt passieren konnte. Am anderen Ende der Leitung hört man, wie dem Direktor die Haare zu Berge stehen, und er bittet um einen Rückruf, weil ihm auf der zweiten Leitung der Geschäftsführer anruft.
Nach einer halben Stunde haben Sie die ersten Informationen von der diensthabenden Schicht gesammelt und alle geweckt, die man wecken konnte. Letztendlich hat der technische Direktor nicht gelogen; es stimmt alles: Der Hauptcluster der Firewalls ist ausgefallen, und keine grundlegenden Maßnahmen bringen ihn wieder zum Laufen. Alle Dienstleistungen, die das Unternehmen anbietet, funktionieren nicht.
Wählen Sie ein Problem nach Ihrem Geschmack, jeder wird sich an etwas Eigenes erinnern. Zum Beispiel, nach dem nächtlichen Update, bei geringer Belastung lief alles gut, und alle Zufriedenen gingen schlafen. Als der Verkehr einsetzte, begannen die Schnittstellenpuffer aufgrund eines Fehlers im Netzwerktreiber überzulaufen.
Die Situation kann gut von Jackie Chan beschrieben werden.

Danke, Jackie.
Die Situation ist nicht sehr angenehm, oder?
Lassen wir unseren Netzwerkfreund mit seinen traurigen Gedanken für eine Weile beiseite.
Lassen Sie uns besprechen, wie sich die Ereignisse weiterentwickeln werden.
Wir schlagen folgende Reihenfolge der Präsentation des Materials vor
- Wir betrachten das Netzwerkschema und analysieren, wie es funktioniert;
- Wir beschreiben, wie wir die Einstellungen von einem Router auf einen anderen mit Ansible übertragen;
- Wir sprechen über die Automatisierung der IT-Infrastruktur im Allgemeinen.
Netzwerkschema und dessen Beschreibung
Diagramm

Wir betrachten das logische Schema unserer Organisation. Wir werden keine spezifischen Hersteller von Geräten nennen, da dies im Rahmen des Artikels keine Rolle spielt. (Der aufmerksame Leser wird selbst herausfinden, welches Equipment verwendet wird). Das ist genau einer der Vorteile der Arbeit mit Ansible: Bei der Einrichtung ist es uns im Großen und Ganzen egal, um welches Equipment es sich handelt. Nur zur besseren Verständlichkeit, es handelt sich um Geräte bekannter Anbieter wie Cisco, Juniper, Check Point, Fortinet, Palo Alto … können Sie Ihre eigene Variante einsetzen.
Wir haben zwei Hauptziele für die Verkehrsverlagerung:
- Die Veröffentlichung unserer Dienstleistungen sicherstellen, die das Geschäft des Unternehmens darstellen;
- Die Verbindung zu den Filialen, dem entfernten Rechenzentrum und Dritten (Partnern und Kunden) sicherstellen, sowie den Zugang der Filialen zum Internet über das zentrale Büro.
Beginnen wir mit den Hauptkomponenten:
- Zwei Border-Router (BRD-01, BRD-02);
- Cluster von Firewalls (FW-CLUSTER);
- Core-Switch (L3-CORE);
- Router, der als Rettungsanker fungieren wird (im Laufe der Problemlösung werden wir die Netzwerkeinstellungen von FW-CLUSTER auf EMERGENCY übertragen) (EMERGENCY);
- Switches zur Verwaltung der Netzwerk-Infrastruktur (L2-MGMT);
- Virtuelle Maschine mit Git und Ansible (VM-AUTOMATION);
- Laptop, auf dem Tests und die Entwicklung von Playbooks für Ansible (Laptop-Automation) durchgeführt werden.
Im Netzwerk ist das dynamische Routing-Protokoll OSPF mit folgenden Bereichen eingerichtet:
- Bereich 0 – Bereich, in dem die Router eingeschlossen sind, die für die Übertragung des Datenverkehrs im Bereich EXCHANGE verantwortlich sind;
- Bereich 1 – Bereich, in dem die Router eingeschlossen sind, die für den Betrieb der Unternehmensservices verantwortlich sind;
- Bereich 2 – Bereich, in dem die Router eingeschlossen sind, die für das Routing des Management-Datenverkehrs verantwortlich sind;
- Bereich N – Bereiche von Zweignetzwerken.
An den Grenz-Routern wurde jeweils ein virtueller Router (VRF-INTERNET) erstellt, auf dem eBGP mit einer vollständigen Sicht und der entsprechenden zugewiesenen AS aktiviert ist. Zwischen den VRFs ist iBGP konfiguriert. Das Unternehmen hat einen Pool von öffentlichen IP-Adressen, die auf diesen VRF-INTERNET veröffentlicht sind. Ein Teil der öffentlichen Adressen wird direkt an FW-CLUSTER geroutet (Adressen, auf denen die Unternehmensservices betrieben werden), ein Teil wird über den Bereich EXCHANGE geleitet (interne Unternehmensservices, die externe IP-Adressen benötigen, und externe NAT-Adressen für Büros). Anschließend gelangt der Datenverkehr zu den virtuellen Routern, die auf L3-CORE mit öffentlichen und privaten Adressen (Sicherheitszonen) erstellt wurden.
Im Management-Netzwerk werden dedizierte Switches verwendet und bilden ein physisch separates Netzwerk. Das Management-Netzwerk ist auch in Sicherheitszonen unterteilt.
Der EMERGENCY-Router dupliziert physisch und logisch FW-CLUSTER. Alle Schnittstellen, außer denen, die in das Management-Netzwerk führen, sind deaktiviert.
Automatisierung und ihre Beschreibung
Wir haben verstanden, wie das Netzwerk funktioniert. Lassen Sie uns nun Schritt für Schritt durchgehen, was wir tun werden, um den Verkehr von FW-CLUSTER auf EMERGENCY umzuleiten:
- Wir schalten die Schnittstellen am Kern-Switch (L3-CORE) ab, die ihn mit FW-CLUSTER verbinden;
- Wir schalten die Schnittstellen am L2-MGMT-Switch ab, die ihn mit FW-CLUSTER verbinden;
- Wir konfigurieren den EMERGENCY-Router (standardmäßig sind alle Schnittstellen deaktiviert, außer denjenigen, die mit L2-MGMT verbunden sind):
- Wir aktivieren die Schnittstellen an EMERGENCY;
- Wir konfigurieren die externe IP-Adresse (für NAT), die auf FW-Cluster war;
- Wir generieren gARP-Anfragen, damit sich die MAC-Adressen in den ARP-Tabellen von L3-CORE von FW-Cluster auf EMERGENCY ändern;
- Wir tragen die Standardroute statisch nach BRD-01, BRD-02 ein;
- Wir erstellen NAT-Regeln;
- Wir aktivieren auf EMERGENCY OSPF Bereich 1;
- Wir aktivieren auf EMERGENCY OSPF Bereich 2;
- Wir ändern die Kosten der Routen im Bereich 1 auf 10;
- Wir ändern die Kosten der Standardroute im Bereich 1 auf 10;
- Wir ändern IP-Adresse, die mit L2-MGMT verbunden sind (auf die, die auf FW-CLUSTER waren);
- Wir generieren gARP-Anfragen, damit sich die MAC-Adressen in den arp-Tabellen von L2-MGMT auf EMERGENCY ändern.
Wir kehren wieder zur ursprünglichen Aufgabenstellung zurück. Es ist drei Uhr morgens, enormer Stress, ein Fehler in einem der Schritte kann zu neuen Problemen führen. Seid ihr bereit, Befehle über die CLI einzugeben? Ja? Ok, dann geht euch wenigstens das Gesicht waschen, trinkt einen Kaffee und sammelt eure Kraft.
Bruce, hilf bitte den Jungs.

Nun, wir machen weiter mit unserer Automatisierung.
Nachfolgend ist das Schema der Funktionsweise des Playbooks in Begriffen von Ansible dargestellt. Dieses Schema spiegelt wider, was wir weiter oben beschrieben haben, es ist nur die konkrete Umsetzung in Ansible.

In diesem Stadium haben wir verstanden, was zu tun ist, das Playbook entworfen und getestet, nun sind wir bereit, es auszuführen.
Ein weiteres kleines lyrisches Abschweifen. Die Leichtigkeit des Erzählens sollte euch nicht in die Irre führen. Der Prozess des Schreibens von Playbooks war nicht so einfach und schnell, wie es scheint. Die Tests haben viel Zeit in Anspruch genommen, es wurde eine virtuelle Umgebung erstellt, die Lösung wurde mehrfach erprobt und es wurden etwa 100 Tests durchgeführt.
Wir starten… Es gibt das Gefühl, dass alles sehr langsam vorankommt, irgendwo ist ein Fehler, etwas wird letztendlich nicht funktionieren. Es fühlt sich an wie ein Sprung mit dem Fallschirm, und der Fallschirm will sich irgendwie nicht öffnen… das ist normal.
Weiter lesen wir das Ergebnis der durchgeführten Operationen des Ansible-Playbooks (IP-Adressen aus Gründen der Verschleierung ersetzt):
[xxx@emergency ansible]$ ansible-playbook -i /etc/ansible/inventories/prod_inventory.ini /etc/ansible/playbooks/emergency_on.yml
SPALTE [------->Notfall auf VCF] ********************************************************
AUFGABE [vcf_junos_emergency_on : PROD-Schnittstellen zu FW-CLUSTER deaktivieren] *********************
geändert: [vcf]
SPALTE [------->Notfall auf MGMT-CORE] ************************************************
AUFGABE [mgmt_junos_emergency_on : MGMT-Schnittstellen zu FW-CLUSTER deaktivieren] ******************
geändert: [m9-03-sw-03-mgmt-core]
SPALTE [------->Notfall auf] ****************************************************
AUFGABE [mk_routeros_emergency_on : EXT-INTERNET-Schnittstelle aktivieren] **************************
geändert: [m9-04-r-04]
AUFGABE [mk_routeros_emergency_on : gARP für EXT-INTERNET-Schnittstelle generieren] ****************
geändert: [m9-04-r-04]
AUFGABE [mk_routeros_emergency_on : Statische Standardroute zu EXT-INTERNET aktivieren] ****************
geändert: [m9-04-r-04]
AUFGABE [mk_routeros_emergency_on : NAT-Regel zur EXT-INTERNET-Schnittstelle ändern] ****************
geändert: [m9-04-r-04] => (element=12)
geändert: [m9-04-r-04] => (element=14)
geändert: [m9-04-r-04] => (element=15)
geändert: [m9-04-r-04] => (element=16)
geändert: [m9-04-r-04] => (element=17)
AUFGABE [mk_routeros_emergency_on : OSPF-Bereich 1 PROD aktivieren] ******************************
geändert: [m9-04-r-04]
AUFGABE [mk_routeros_emergency_on : OSPF-Bereich 2 MGMT aktivieren] *****************************
geändert: [m9-04-r-04]
AUFGABE [mk_routeros_emergency_on : OSPF-Bereich 1 Schnittstellenkosten auf 10 ändern] *****************
geändert: [m9-04-r-04] => (element=VLAN-1001)
geändert: [m9-04-r-04] => (element=VLAN-1002)
geändert: [m9-04-r-04] => (element=VLAN-1003)
geändert: [m9-04-r-04] => (element=VLAN-1004)
geändert: [m9-04-r-04] => (element=VLAN-1005)
geändert: [m9-04-r-04] => (element=VLAN-1006)
geändert: [m9-04-r-04] => (element=VLAN-1007)
geändert: [m9-04-r-04] => (element=VLAN-1008)
geändert: [m9-04-r-04] => (element=VLAN-1009)
geändert: [m9-04-r-04] => (element=VLAN-1010)
geändert: [m9-04-r-04] => (element=VLAN-1011)
geändert: [m9-04-r-04] => (element=VLAN-1012)
geändert: [m9-04-r-04] => (element=VLAN-1013)
geändert: [m9-04-r-04] => (element=VLAN-1100)
AUFGABE [mk_routeros_emergency_on : Standardkosten für OSPF Bereich 1 auf 10 ändern] ******************
geändert: [m9-04-r-04]
AUFGABE [mk_routeros_emergency_on : MGMT-Schnittstellen IP-Adressen ändern] ********************
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})
AUFGABE [mk_routeros_emergency_on : gARPs für MGMT-Schnittstellen generieren] *********************
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
geändert: [m9-04-r-04] => (element={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})
SPALTE RÜCKBLICK ************************************************************************Fertig!
Eigentlich ist es noch nicht ganz fertig. Vergessen wir nicht die Konvergenz dynamischer Routingprotokolle und das Laden einer großen Anzahl von Routen in die FIB. Darauf haben wir keinen Einfluss. Wir warten. Hat gepasst. Jetzt ist es fertig.
Im Dorf Vilabaggio (das die Netzwerkeinstellungen nicht automatisieren möchte) wird weiterhin Geschirr gewaschen. Bruce (es ist zwar ein anderer, aber nicht minder beeindruckend) versucht zu verstehen, wie viel weitere Hardware manuell neu konfiguriert werden muss.

Ich möchte noch einen wichtigen Punkt ansprechen. Wie bekommen wir alles zurück? Nach einer gewissen Zeit werden wir unser FW-CLUSTER wieder zum Leben erwecken. Das ist die Haupthardware, nicht die Reserve, darauf sollte das Netzwerk laufen.
Fühlen Sie, wie die Netzwerktechniker unruhig werden? Der technische Direktor wird tausend Argumente hören, warum man das nicht tun sollte und warum es später gemacht werden kann. Leider besteht die Netzwerkarbeit aus vielen Flickstellen, Resten früherer Pracht. Es entsteht ein Flickenteppich. Unsere Aufgabe insgesamt, nicht nur in dieser konkreten Situation, sondern grundsätzlich als IT-Spezialisten, ist es, die Netzwerkarbeit zu einem schönen englischen Wort „consistency“ zu bringen. Es ist sehr vielschichtig und kann übersetzt werden als: Konsistenz, Widerspruchsfreiheit, Logik, Koordination, Systematik, Vergleichbarkeit, Kohärenz. Darum geht es. Nur in diesem Zustand ist das Netzwerk verwaltbar. Wir verstehen klar, was wie funktioniert, wir sind uns bewusst, was geändert werden muss, falls notwendig, und wir wissen genau, wo wir schauen müssen, wenn Probleme auftreten. Nur in einem solchen Netzwerk können Tricks durchgeführt werden, wie wir sie jetzt beschrieben haben.
Tatsächlich wurde ein weiterer Playbook vorbereitet, der die Einstellungen in den Ursprungszustand zurückführte. Die Logik seiner Arbeit ist die gleiche (es ist wichtig zu beachten, dass die Reihenfolge der Aufgaben sehr wichtig ist). Um den bereits recht langen Artikel nicht zu verlängern, haben wir uns entschieden, das Listing der Playbook-Ausführung nicht zu veröffentlichen. Nach solchen Übungen werden Sie sich viel ruhiger und sicherer für die Zukunft fühlen. Darüber hinaus werden sich alle Provisorien, die Sie dort errichtet haben, sofort offenbaren.
Alle Interessierten können uns schreiben und die Quellcodes aller geschriebenen Codes sowie alle Playbooks erhalten. Die Kontakte finden Sie im Profil.
Das DBMS Tarantool ist ein attraktives, zukunftsträchtiges Produkt zur Erstellung von hochbelasteten Anwendungen.
Nach unserer Meinung haben sich die Prozesse, die automatisierbar sind, noch nicht herauskristallisiert. Basierend auf dem, womit wir konfrontiert waren, und dem, was unsere westlichen Kollegen diskutieren, sind vorläufig die folgenden Themen sichtbar:
- Gerätebereitstellung;
- Datenerfassung;
- Berichterstattung;
- Fehlerbehebung;
- Compliance.
Wenn Interesse besteht, können wir die Diskussion zu einem der genannten Themen fortsetzen.
Außerdem möchte ich ein wenig über das Thema Automatisierung nachdenken. Wie sollte sie in unserem Verständnis sein:
- Das System sollte ohne Mensch leben und dabei vom Menschen verbessert werden. Das System sollte nicht vom Menschen abhängig sein;
- Der Betrieb sollte fachlich sein. Es fehlt eine Klasse von Spezialisten, die routinemäßige Aufgaben ausführen. Es gibt Experten, die всю рутину автоматизировали und nur komplexe Aufgaben lösen;
- Routinemäßige Standardaufgaben werden automatisch 'auf Knopfdruck' erledigt, es werden keine Ressourcen verschwendet. Das Ergebnis solcher Aufgaben ist immer vorhersehbar und klar.
Und wohin sollen diese Punkte führen:
- Transparenz der IT-Infrastruktur (weniger Risiken beim Betrieb, bei der Modernisierung, Implementierung. Weniger Ausfallzeiten im Jahr);
- Fähigkeit, IT-Ressourcen zu planen (Capacity-Planning-System — es ist erkennbar, wie viel verbraucht wird, es ist erkennbar, wie viele Ressourcen in einem einheitlichen System benötigt werden, und nicht durch E-Mails und Besuche bei den Abteilungsleitern);
- Die Möglichkeit, die Anzahl des unterstützenden IT-Personals zu reduzieren.
Die Autoren des Artikels: Alexander Tschieljow (CCIE RS, CCIE SP) und Pawel Kirilow. Wir sind daran interessiert, Lösungen zum Thema Automatisierung der IT-Infrastruktur zu diskutieren und anzubieten.
Quelle: habr.com
