Wéi Dir d'Kontroll iwwer Är Netzwierkinfrastruktur iwwerhëlt. Kapitel véier. Automatisatioun. Schablounen

Dësen Artikel ass de sechsten an der Serie "Wéi Kontroll iwwer Är Netzwierkinfrastruktur ze huelen." Den Inhalt vun all Artikelen an der Serie a Linken kann fonnt ginn hei.

Nodeems ech e puer Themen hannerlooss hunn, hunn ech decidéiert en neit Kapitel unzefänken.

Ech kommen e bësse méi spéit op d'Sécherheet zréck. Hei wëll ech eng einfach awer effektiv Approche diskutéieren, déi ech sécher sinn, an enger oder anerer Form, fir vill nëtzlech ka sinn. Dëst ass méi eng Kuerzgeschicht iwwer wéi d'Automatisatioun d'Liewen vun engem Ingenieur kann änneren. Mir schwätzen iwwer d'Benotzung vun Templates. Um Enn gëtt et eng Lëscht vu menge Projete wou Dir gesitt wéi alles hei beschriwwen funktionnéiert.

DevOps fir de Reseau

Eng Konfiguratioun mat engem Skript erstellen, GIT benotze fir Ännerungen an der IT-Infrastruktur ze kontrolléieren, Remote "Eroplueden" - dës Iddie kommen als éischt wann Dir un d'technesch Ëmsetzung vun der DevOps Approche denkt. D'Virdeeler sinn evident. Mee leider ginn et och Nodeeler.

Wéi viru méi wéi 5 Joer eis Entwéckler bei eis, d'Netzwierker, mat dëse Virschléi komm sinn, ware mir net frou.

Ech muss soen, datt mir en zimlech motley Netzwierk geierft hunn, besteet aus Ausrüstung vu ronn 10 verschiddene Verkeefer. Et war bequem fir e puer Saachen duerch eise Liiblingscli ze konfiguréieren, awer an anerer hu mir léiwer d'GUI ze benotzen. Zousätzlech, laang Aarbecht op "Live" Ausrüstung huet eis zu Echtzäit Kontroll geléiert. Zum Beispill, wann Dir Ännerunge maacht, fille ech mech vill méi bequem direkt duerch de Cli ze schaffen. Op dës Manéier kann ech séier gesinn datt eppes falsch gaang ass an d'Ännerungen zréckrollen. All dëst war an e puer Widdersproch mat hiren Iddien.

Aner Froen stelle sech och op, zum Beispill kann d'Interface liicht vu Versioun zu Versioun vun der Software änneren. Dëst wäert schlussendlech verursaachen datt Äre Skript déi falsch "Config" erstellt. Ech wéilt d'Produktioun net benotze fir "an ze lafen".

Oder, wéi ze verstoen datt d'Konfiguratiounsbefehle richteg applizéiert goufen a wat ze maachen am Fall vun engem Feeler?

Ech wëll net soen datt all dës Themen onléisbar sinn. Just "A" ze soen mécht méiglecherweis Sënn fir "B" och ze soen, a wann Dir déiselwecht Prozesser fir Ännerungskontroll benotze wëllt wéi an der Entwécklung, da musst Dir nieft der Produktioun Dev- an Staging-Ëmfeld hunn. Da gesäit dës Approche komplett aus. Awer wéi vill wäert et kaschten?

Awer et gëtt eng Situatioun, wann d'Nodeeler praktesch ausgeglach sinn, an nëmmen d'Virdeeler bleiwen. Ech schwätzen iwwer Design Aarbecht.

De Projet

Zënter zwee Joer hunn ech un engem Projet deelgeholl fir en Datacenter fir e grousse Provider ze bauen. Ech sinn responsabel fir F5 a Palo Alto an dësem Projet. Aus der Siicht vu Cisco ass dëst "Drëtt Partei Ausrüstung".

Fir mech perséinlech ginn et zwou verschidde Etappen an dësem Projet.

Éischt Etapp

Dat éischt Joer war ech endlos beschäftegt, ech hunn Nuechten a Weekender geschafft. Ech konnt de Kapp net erhéijen. Den Drock vun der Gestioun an dem Client war staark a kontinuéierlech. An enger konstanter Routine konnt ech net emol probéieren de Prozess ze optimiséieren. Et war net nëmmen an net sou vill d'Konfiguratioun vun der Ausrüstung wéi d'Virbereedung vun der Designdokumentatioun.

Déi éischt Tester hunn ugefaang, an ech wier iwwerrascht wéi vill kleng Feeler an Ongenauegkeeten gemaach goufen. Natierlech huet alles geschafft, awer et fehlt e Buschtaf am Numm, et fehlt eng Zeil am Kommando ... D'Tester sinn ëmmer weidergaang, an ech war schonn an engem konstante, deegleche Kampf mat Feeler, Tester an Dokumentatioun .

Dëst ass e Joer laang gedauert. De Projet war, souwäit ech verstinn, net fir jiddereen einfach, mee no an no gouf de Client ëmmer méi zefridden, an domat konnt een zousätzlech Ingenieuren astellen, déi sech selwer en Deel vun der Routine iwwerhuelen konnten.

Elo kéinte mer eis e bëssen ëmkucken.
An dat war den Ufank vun der zweeter Etapp.

Stage zwee

Ech hu beschloss de Prozess ze automatiséieren.

Wat ech aus menger Kommunikatioun mat den Entwéckler zu där Zäit verstanen hunn (a mir mussen Hommage bezuelen, mir haten e staarkt Team) ass datt den Textformat, obwuel op den éischte Bléck eppes aus der Welt vum DOS Betribssystem schéngt, eng Zuel huet vu wäertvollen Eegeschaften.
Also, zum Beispill, den Textformat wäert nëtzlech sinn wann Dir de GIT an all sengen Derivate voll profitéiere wëllt. An ech wollt.

Gutt, et géif schéngen datt Dir einfach eng Konfiguratioun oder eng Lëscht vu Kommandoen späichere kënnt, awer Ännerungen ze maachen ass zimmlech onbequem. Zousätzlech gëtt et eng aner wichteg Aufgab beim Design. Dir sollt Dokumentatioun hunn, déi Ären Design als Ganzt beschreift (Low Level Design) a spezifesch Implementatioun (Network Implementation Plan). An an dësem Fall gesäit d'Benotzung vu Templates aus wéi eng ganz gëeegent Optioun.

Also, wann Dir YAML a Jinja2 benotzt, erfëllt eng YAML Datei mat Konfiguratiounsparameter wéi IP Adressen, BGP AS Zuelen, ... perfekt d'Roll vum NIP, während Jinja2 Templates Syntax enthalen entspriechend dem Design, dat heescht, et ass am Wesentlechen eng Reflexioun vun LLD.

Et huet zwee Deeg gedauert fir YAML a Jinja2 ze léieren. E puer gutt Beispiller si genuch fir ze verstoen wéi dëst funktionnéiert. Dunn huet et ongeféier zwou Wochen gedauert fir all Templates ze kreéieren déi un eisem Design passen: eng Woch fir Palo Alto an eng aner Woch fir F5. All dëst gouf op Corporate Githab gepost.

Elo huet den Ännerungsprozess esou ausgesinn:

  • geännert der YAML Datei
  • eng Konfiguratiounsdatei erstallt mat enger Schabloun (Jinja2)
  • an engem Remote Repository gespäichert
  • eropgelueden déi erstallt Konfiguratioun op d'Ausrüstung
  • Ech hunn e Feeler gesinn
  • geännert der YAML Datei oder Jinja2 Schabloun
  • eng Konfiguratiounsdatei erstallt mat enger Schabloun (Jinja2)
  • ...

Et ass kloer, datt ufanks vill Zäit un d'Ännerungen verbruecht gouf, awer no enger Woch oder zwou gouf dat éischter eng Raritéit.

E gudden Test an d'Méiglechkeet fir alles ze debuggen war de Wonsch vum Client d'Nummkonventioun z'änneren. Déi, déi mat F5 geschafft hunn, verstinn d'Piquancy vun der Situatioun. Mee fir mech war et ganz einfach. Ech hunn d'Nimm an der YAML Datei geännert, déi ganz Konfiguratioun vun der Ausrüstung geläscht, en neien generéiert an eropgelueden. Alles, inklusiv Bugfixes, huet 4 Deeg gedauert: zwee Deeg fir all Technologie. Duerno war ech prett fir déi nächst Etapp, nämlech d'Schafe vun DEV an Staging Datenzenteren.

Dev an Staging

Staging replizéiert tatsächlech d'Produktioun komplett. Dev ass eng staark ofgeschnidden Kopie haaptsächlech op virtueller Hardware gebaut. Eng ideal Situatioun fir eng nei Approche. Wann ech d'Zäit isoléieren, déi ech aus dem Gesamtprozess verbruecht hunn, da mengen ech, datt d'Aarbecht net méi wéi 2 Wochen gedauert huet. D'Haaptzäit ass op déi aner Säit ze waarden an zesummen no Problemer ze sichen. D'Ëmsetzung vun Drëtt Partei ass bal vun aneren onopgemerkt. Et war souguer Zäit fir eppes ze léieren an e puer Artikelen iwwer Habré ze schreiwen :)

Komme mer zesummegefaasst

Also, wat hunn ech an der ënneschter Linn?

  • Alles wat ech maache muss fir d'Konfiguratioun z'änneren ass eng einfach, kloer strukturéiert YAML-Datei mat Konfiguratiounsparameter z'änneren. Ech änneren ni de Python Skript a ganz selten (nëmme wann et e Feeler ass) änneren ech de Jinja2 heatlate
  • Aus der Siicht vun der Dokumentatioun ass dëst eng bal ideal Situatioun. Dir ännert d'Dokumentatioun (YAML Dateien déngen als NIP) an lued dës Konfiguratioun op d'Ausrüstung erop. Sou ass Är Dokumentatioun ëmmer aktuell

All dëst huet zu der Tatsaach gefouert, datt

  • de Feelerquote ass op bal 0 erofgaang
  • 90 Prozent vun der Routine ass fort
  • d'Vitesse vun der Ëmsetzung ass wesentlech eropgaang

BEZUELEN, F5Y, ACY

Ech hu gesot datt e puer Beispiller genuch sinn fir ze verstoen wéi et funktionnéiert.
Hei ass eng kuerz (an natierlech geännert) Versioun vun deem wat während menger Aarbecht erstallt gouf.

BEZUELEN = Détachement PHallo Alto vun Yaml = Palo Alto aus Yaml
F5Y = Détachement F5 aus Yaml = F5 aus Yaml (kënnt geschwënn)
ACY = Détachement ACi vun Yaml = F5 aus Yjr

Ech wäert e puer Wierder iwwer ACY derbäi (net mat ACI ze verwiesselen).

Déi, déi mat ACI geschafft hunn, wëssen datt dëst Wonner (an och op eng gutt Manéier) definitiv net vun Netzwierker erstallt gouf :). Vergiesst alles wat Dir iwwer de Reseau wousst - et wäert Iech net nëtzlech sinn!
Et ass e bëssen iwwerdriwwen, awer et vermëttelt ongeféier d'Gefill datt ech dauernd erlieft hunn, fir déi lescht 3 Joer, mat ACI ze schaffen.

An an dësem Fall ass ACY net nëmmen eng Geleeënheet fir e Changement Control Prozess ze bauen (wat besonnesch wichteg ass am Fall vun ACI, well et soll den zentralen a kriteschen Deel vun Ärem Rechenzentrum sinn), mee gëtt Iech och engem User-frëndlech Interface fir schafen Configuratioun.

D'Ingenieuren op dësem Projet benotzen Excel fir ACI anstatt YAML fir genau déiselwecht Zwecker ze konfiguréieren. Et gi natierlech Virdeeler fir Excel ze benotzen:

  • Är NIP an enger Datei
  • schéi Schëlder déi agreabel sinn fir de Client ze kucken
  • Dir kënnt e puer Excel Tools benotzen

Awer et gëtt e Minus, a menger Meenung no ass et méi wéi d'Virdeeler. Ännerungen ze kontrolléieren an d'Teamaarbecht ze koordinéieren gëtt vill méi schwéier.

ACY ass tatsächlech eng Uwendung vun de selwechte Approche déi ech fir Drëtt Partei benotzt hunn fir ACI ze konfiguréieren.

Source: will.com

Setzt e Commentaire