Përshëndetje, Habr!
Në këtë artikull dëshirojmë të flasim rreth automatizimit të infrastrukturës rrjetore. Do të paraqesim një skemë funksionale të rrjetit, e cila operon në një kompani të vogël, por shumë krenare. Të gjitha përputhjet me pajisjet reale rrjetore janë rastësore. Ne do të shqyrtojmë një rast që ndodhi në këtë rrjet, i cili mund të kishte çuar në ndalimin e biznesit për një periudhë të gjatë dhe humbje serioze financiare. Zgjidhja e këtij rasti është shumë në përputhje me konceptin "Automatizimi i Infrastrukturës Rrjetore". Me ndihmën e mjeteve të automatizimit, do të tregojmë se si mund të zgjidhen në mënyrë efikase problemet komplekse brenda afateve të shkurtra, dhe do të reflektojmë mbi temën se pse këto probleme duhet të zgjidhen në këtë mënyrë, dhe jo ndryshe (nëpërmjet konsolës).
Shënim ligjor
Mjetet kryesore për automatizim në dispozicionin tonë janë Ansible (si një mjet automatizimi) dhe Git (si një depo për playbook-et e Ansible). Menjëherë dëshirojmë të sqarojmë se kjo nuk është një artikull njohës, ku ne flasim rreth logjikës së punës së Ansible apo Git, dhe shpjegojmë gjërat bazë (p.sh. çfarë janë rolet, skemat, modulat, skedarët, variablat në Ansible, ose çfarë ndodh kur japim komandat git push ose git commit). Kjo histori nuk është për atë se si mund të ushtrohemi në Ansible, të konfigurojmë pajisjet për NTP ose SMTP. Kjo është një histori për atë se si mund të zgjidhim shpejt dhe preferohet pa gabime një problem rrjetor. Gjithashtu, është e dëshirueshme të keni një njohuri të mirë se si funksionon një rrjet, veçanërisht, çfarë është steku i protokolleve TCP/IP, OSPF, BGP. Po ashtu, zgjedhja e Ansible dhe Git do t'i lëmë jashtë diskutimit. Nëse për ju ende qëndron zgjedhja e një zgjidhjeje specifike, rekomandojmë mjaft të lexoni librin "Network Programmability and Automation. Skills for the Next-Generation Network Engineer" nga Jason Edelman, Scott S. Lowe dhe Matt Oswalt.
Tani në çështjen e punës.
Vendosja e detyrës
Imagjinoni situatën: ora 3 e natës, ju po flini thellë dhe shihni ëndrra. Një telefonatë. Drejtori teknik telefonon:
— Po?
— ###, ####, ##### klusteri i firewall-eve ra dhe nuk ngrihet!!!
Ju fshini sytë, përpiqeni të kuptoni çfarë po ndodh dhe ta imagjinoni se si mund të ndodhte kjo. Në telefon dëgjohet si po i shkurtohen flokët drejtorit, dhe ai kërkon të rikthehet, sepse në linjën e dytë po telefonon gjenerali.
Pas gjysmë ore, ju keni mbledhur informacionin e parë nga ekipi në detyrë, zgjuar të gjithë ata që mund të zhgjohen. Si rezultat, drejtori teknik nuk ka gabuara, gjithçka është siç thuhet, klasteri kryesor i firewalleve ka rënë, dhe asnjë lëvizje themelore nuk e sjell në vetvete. Të gjitha shërbimet që ofron kompania, nuk funksionojnë.
Zgjidhni problemin sipas dëshirës tuaj, çdo kush do të kujtojë diçka të vetën. Për shembull, pas përditësimit të natës, në mungesë të një ngarkese të madhe, gjithçka funksionoi mirë, dhe të gjithë të kënaqur shkuan të flinin. Filloi trafiku, dhe filluan të mbushen bufferat e ndërfaqeve për shkak të një gabimi në shoferin e kartës rrjet.
Situatën mund ta përshkruajë mirë Jackie Chan.

Faleminderit, Jackie.
Situata nuk është shumë e këndshme, apo jo?
Të lëmë për një kohë mikun tonë të rrjetit me mendimet e tij të trishtueshme.
Të diskutojmë se si do të zhvillohen ngjarjet më tej.
Propozojmë rendin e mëposhtëm të materialit.
- Do të shqyrtojmë skemën e rrjetit dhe do të analizojmë se si funksionon;
- Do të përshkruajmë se si i transferojmë cilësimet nga një router në tjetrin me ndihmën e Ansible;
- Do të flasim për automatizimin e infrastrukturës IT në përgjithësi.
Skema e rrjetit dhe përshkrimi i saj
Skema

Do të shqyrtojmë skemën logjike të organizatës tonë. Nuk do të përmendim prodhues specifikë pajisjesh, brenda artikullit kjo nuk ka rëndësi. (Lexuesi i vëmendshëm do të kuptojë vetë se cilat pajisje përdoren). Ky është një nga avantazhet e mira të punës me Ansible, gjatë konfigurimit na bëhet njësoj se çfarë pajisjesh janë. Thjesht për të kuptuar, këto janë pajisje të prodhuesve të njohur, si Cisco, Juniper, Check Point, Fortinet, Palo Alto… mund të përdorni variantin tuaj.
Ne kemi dy detyra kryesore për transfertën e trafikut:
- Të sigurojmë publikimin e shërbimeve tona, të cilat janë biznesi i kompanisë;
- Të sigurojmë lidhjen me filiale, QNV të largëta dhe organizata të treta (partnerë dhe klientë), si dhe dalje të filialeve në internet përmes zyrës qendrore.
Të fillojmë me elementët bazë:
- Dy routerë kufitarë (BRD-01, BRD-02);
- Klasteri i firewalleve (FW-CLUSTER);
- Switch-i i bërthamës (L3-CORE);
- Routeri, i cili do të bëhet rreth i shpëtimit (në rrugën e zgjidhjes së problemit do të transferojmë cilësimet rrjetore nga FW-CLUSTER në EMERGENCY) (EMERGENCY);
- Switch-et për menaxhimin e infrastrukturës rrjetore (L2-MGMT);
- Makinë virtuale me Git dhe Ansible (VM-AUTOMATION);
- Laptopi, në të cilin kryhet testimi dhe zhvillimi i playbook-ëve për Ansible (Laptop-Automation).
Në rrjet është konfiguruar protokolli dinamik i rrugëzimit OSPF me zonat e mëposhtme:
- Zona 0 – zona që përfshin routerët që janë përgjegjës për kalimin e trafikut në zonën EXCHANGE;
- Zona 1 – zona që përfshin routerët që janë përgjegjës për funksionimin e shërbimeve të kompanisë;
- Zona 2 – zona që përfshin routerët që janë përgjegjës për ruterizimin e trafikut të menaxhimit;
- Zona N – zonat e rrjeteve filiale.
Në routerët kufitarë është krijuar një router virtual (VRF-INTERNET), në të cilin është ngritur eBGP full view me AS përkatës të caktuar. Ndërmjet VRF-ve është e konfiguruar iBGP. Kompania ka një grup adresash të bardha, të cilat janë publikuar në këto VRF-INTERNET. Disa nga adresat e bardha ruterizohen drejtpërdrejt në FW-CLUSTER (adresat ku funksionojnë shërbimet e kompanisë), disa ruterizohen përmes zonës EXCHANGE (shërbime të brendshme të kompanisë që kërkojnë adresat IP ekstern dhe adresat ekstern NAT për zyrat). Më tej, trafiku kalon në routerët virtualë të krijuar në L3-CORE me adresat e bardha dhe të gjelbra (zonat e sigurisë).
Në rrjetin e Menaxhimit përdoren switch-e të dedikuar dhe përbëjnë një rrjet fizikisht të ndarë. Rrjeti i Menaxhimit gjithashtu është ndarë në zona sigurie.
Routeri EMERGENCY fizikisht dhe logjikisht dyfishon FW-CLUSTER. Të gjitha ndërfaqet janë çaktivizuar përveç atyre që shikojnë në rrjetin e menaxhimit.
Automatizimi dhe përshkrimi i tij
Kemi kuptuar si funksionon rrjeti. Tani le të shqyrtojmë hap pas hapi se çfarë do të bëjmë për të transferuar trafikun nga FW-CLUSTER në EMERGENCY:
- Çaktivizojmë ndërfaqet në switch-in e kernelit (L3-CORE), që e lidhin atë me FW-CLUSTER;
- Çaktivizojmë ndërfaqet në switch-in e kernelit L2-MGMT, që e lidhin atë me FW-CLUSTER;
- Konfigurojmë routerin EMERGENCY (në mënyrë të parazgjedhur të gjitha ndërfaqet janë të çaktivizuara përveç atyre që janë të lidhura me L2-MGMT):
- Aktivizojmë ndërfaqet në EMERGENCY;
- Konfigurojmë adresën IP ekstern (për NAT) që ishte në FW-Cluster;
- Gjenerojmë kërkesa gARP, për të ndryshuar adresat MAC në tabelat ARP të L3-CORE nga FW-Cluster në EMERGENCY;
- Shkruajmë një rrugë për default statik deri në BRD-01, BRD-02;
- Krijojmë rregulla NAT;
- Ngrisim në EMERGENCY OSPF Zona 1;
- Ngrisim në EMERGENCY OSPF Zona 2;
- Ndryshojmë kostot e rrugëve në Zonën 1 në 10;
- Ndryshojmë kostot e rrugës për default në Zonën 1 në 10;
- Ndryshojmë IP-adresave, të lidhura me L2-MGMT (në ato që ishin në FW-CLUSTER);
- Gjenerojmë kërkesa gARP, për të ndryshuar adresat MAC në tabelat ARP të L2-MGMT nga FW-CLUSTER në EMERGENCY.
Sërish kthehemi te ngarkesa e detyrës fillestare. Është tre ora e mëngjesit, një stres i madh, gabimi në ndonjë nga hapat mund të çojë në probleme të reja. A jeni gati të shkruani komanda përmes CLI? Po? Ok, shkoni, të paktën lani fytyrën, pini një kafe dhe mbledhni guximin tuaj.
Bruce, të lutem, ndihmojini djemve.

Ndërsa ne po vazhdojmë me automatizimin tonë.
Më poshtë është paraqitur skema e punës së playbook-ut në terma të Ansible. Kjo skemë pasqyron ato që përshkruam pak më sipër, thjesht një realizim konkret në Ansible.

Në këtë fazë e kuptuam se çfarë duhet bërë, zhvilluam playbook-un, bëmë testimin, tani jemi të gatshëm ta nisim.
Një shënim i vogël lyrik. Lehtësia e tregimit nuk duhet t'ju mashtrojë. Procesi i shkruarjes së playbook-ëve nuk ishte i thjeshtë dhe i shpejtë ashtu siç mund të duket. Testimi zuri një kohë të konsiderueshme, krijuam një stendë virtuale, zgjidhja u provua shumë herë, u bënë rreth 100 teste.
Po e nisim... Ka ndjesinë se gjithçka po ndodh shumë ngadalë, diku ka një gabim, diçka nuk do të funksionojë. Ndjenja e një kërcimi me parashutë, e parashuta nuk do të hapet menjëherë... kjo është normale.
Më pas lexojmë rezultatin e operacioneve të kryera nga playbook-u i Ansible (adresat IP janë zëvendësuar për qëllime konspirative):
[xxx@emergency ansible]$ ansible-playbook -i /etc/ansible/inventories/prod_inventory.ini /etc/ansible/playbooks/emergency_on.yml
LUF [------->Emergjencë në VCF] ********************************************************
Detyra [vcf_junos_emergency_on : Çaktivizo interfeset PROD në FW-CLUSTER] *********************
ndryshuar: [vcf]
LUF [------->Emergjencë në MGMT-CORE] ************************************************
Detyra [mgmt_junos_emergency_on : Çaktivizo interfeset MGMT në FW-CLUSTER] ******************
ndryshuar: [m9-03-sw-03-mgmt-core]
LUF [------->Emergjencë në] ****************************************************
Detyra [mk_routeros_emergency_on : Aktivizo interfesin EXT-INTERNET] **************************
ndryshuar: [m9-04-r-04]
Detyra [mk_routeros_emergency_on : Gjenero gARP për interfesin EXT-INTERNET] ****************
ndryshuar: [m9-04-r-04]
Detyra [mk_routeros_emergency_on : Aktivizo rrugën statike në EXT-INTERNET] ****************
ndryshuar: [m9-04-r-04]
Detyra [mk_routeros_emergency_on : Ndrysho rregullin NAT në interfesin EXT-INTERNET] ****************
ndryshuar: [m9-04-r-04] => (item=12)
ndryshuar: [m9-04-r-04] => (item=14)
ndryshuar: [m9-04-r-04] => (item=15)
ndryshuar: [m9-04-r-04] => (item=16)
ndryshuar: [m9-04-r-04] => (item=17)
Detyra [mk_routeros_emergency_on : Aktivizo OSPF Area 1 PROD] ******************************
ndryshuar: [m9-04-r-04]
Detyra [mk_routeros_emergency_on : Aktivizo OSPF Area 2 MGMT] *****************************
ndryshuar: [m9-04-r-04]
Detyra [mk_routeros_emergency_on : Ndrysho kostot e interfeseve OSPF Area 1 në 10] *****************
ndryshuar: [m9-04-r-04] => (item=VLAN-1001)
ndryshuar: [m9-04-r-04] => (item=VLAN-1002)
ndryshuar: [m9-04-r-04] => (item=VLAN-1003)
ndryshuar: [m9-04-r-04] => (item=VLAN-1004)
ndryshuar: [m9-04-r-04] => (item=VLAN-1005)
ndryshuar: [m9-04-r-04] => (item=VLAN-1006)
ndryshuar: [m9-04-r-04] => (item=VLAN-1007)
ndryshuar: [m9-04-r-04] => (item=VLAN-1008)
ndryshuar: [m9-04-r-04] => (item=VLAN-1009)
ndryshuar: [m9-04-r-04] => (item=VLAN-1010)
ndryshuar: [m9-04-r-04] => (item=VLAN-1011)
ndryshuar: [m9-04-r-04] => (item=VLAN-1012)
ndryshuar: [m9-04-r-04] => (item=VLAN-1013)
ndryshuar: [m9-04-r-04] => (item=VLAN-1100)
Detyra [mk_routeros_emergency_on : Ndrysho kostin e default të OSPF area1 në 10] ******************
ndryshuar: [m9-04-r-04]
Detyra [mk_routeros_emergency_on : Ndrysho adresat IP të interfeseve MGMT] ********************
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})
Detyra [mk_routeros_emergency_on : Gjenero gARPs për interfeset MGMT] *********************
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})
LUF RECAP ************************************************************************Gati!
Në të vërtetë, nuk është plotësisht gati, mos harrojmë për konvergjencën e protokolleve dinamike të rrugëzimit dhe ngarkimin e një sasi të madhe rrugësh në FIB. Atë ne nuk mund ta ndikojmë aspak. Po presim. U harmonizua. Ja, tani është gati.
Ndërsa në fshatin Vilabajo (i cili nuk dëshiron të automatizojë konfigurimin e rrjetit) vazhdojnë të lënë enët. Bruce (për të thënë të vërtetën, tashmë një tjetër, por po aq i shkëlqyer) po përpiqet të kuptojë se sa më shumë duhet të ri-konfigurojë manualisht pajisjet.

Do të doja gjithashtu të ndalesha në një çështje të rëndësishme. Si mund ta kthejmë gjithçka prapa? Pas një kohe, ne do ta rikthejmë në jetë FW-CLUSTER-in tonë. Kjo është pajisja kryesore, jo rezerva, dhe rrjeti duhet të funksionojë mbi të.
A ndjeni se si fillon të digjet te rrjetistët? Drejtori teknik do të dëgjojë një mijë argumente se pse nuk duhet ta bëjmë këtë, pse mund ta bëjmë më vonë. Për fat të keq, kështu përfundon puna e rrjetit nga një grumbull patchesh, copëza, mbetje të luksit të dikurshëm. Kjo është si një qilim i patchwork-ut. Detyra jonë në mënyrë të përgjithshme, jo vetëm në këtë situatë konkrete, por në përgjithësi si profesionistë IT, është të sjellim punën e rrjetit në një fjalë të bukur angleze 'consistency', e cila ka shumë fqinjësi, mund të përkthehet si: koherencë, paanshmëri, logjikë, përshtatshmëri, sistematikë, krahasueshmëri, lidhshmëri. E gjitha ka lidhje me të. Vetëm në këtë gjendje rrjeti është i menaxhueshëm, ne kuptojmë qartë se çfarë dhe si funksionon, ne e kuptojmë qartë se çka duhet të ndryshojmë, nëse është e nevojshme, ne e dimë qartë ku duhet të shikojmë, në rast se ndodhin probleme. Dhe vetëm në një rrjet të tillë mund të realizohen trukë, të ngjashme me ato që po i përshkruajmë tani.
Në fakt, është përgatitur një playbook tjetër, i cili rikthen cilësimet në gjendjen e tyre origjinale. Logjika e funksionimit të tij është e njëjtë (është e rëndësishme të mbani mend, rendi i detyrave është shumë i rëndësishëm), për të mos e zgjatur këtë artikull tashmë të gjatë, vendosëm të mos publikojmë listingun e ekzekutimit të playbook-ut. Pas këtyre ushtrimeve, do të ndjeni një qetësi dhe sigurim më të madh në të ardhmen, përveç kësaj, çdo ndihmesë që keni instaluar aty do të bëhet menjëherë e dukshme.
Të gjithë të interesuarit mund të na shkruajnë dhe të marrin kodin burimor të gjithë kodit të shkruar, së bashku me të gjitha playbook-et. Kontaktoni në profil.
Përfundimet
Sipas mendimit tonë, proceset që mund të automatizohen ende nuk janë kristalizuar. Nga ajo me të cilën jemi përballur, dhe atë që diskutojnë kolegët tanë perëndimorë, deri më tani janë duke u parë temat e mëposhtme:
- Prokurimi i pajisjeve;
- Koleksioni i të dhënave;
- Raportimi;
- Zgjidhja e problemeve;
- Përputhshmëria.
Nëse ka interes, ne mund të vazhdojmë diskutimin mbi një nga temat e caktuara.
Përveç kësaj, dëshirojmë të diskutojmë pak mbi automatizimin. Siç e kuptojmë ne, çfarë duhet të jetë ai:
- Sistemi duhet të funksionojë pa njeriun, por të përmirësohet nga njeriu. Sistemi nuk duhet të varet nga njeriu;
- Eksplorimi duhet të jetë ekspertizë. Mungon një klasë specialistësh, të cilët përfundojnë detyrat rutinë. Ka ekspertë, të cilët e kanë automatizuar tërë rutinën dhe zgjidhin vetëm detyrat komplekse;
- Detyrat rutinë-standard bëhen automatikisht "me një buton", pa shkarkuar burime. Rezultati i këtyre detyrave është gjithmonë i parashikueshëm dhe i qartë.
Dhe në çfarë duhet të çojnë këto pika:
- Transparency of IT infrastructure (Më pak rreziqe në operim, modernizim, zbatim. Më pak downtime në vit);
- Mundësia për të planifikuar burimet IT (Sistemi i planifikimit të kapacitetit - e shihni se sa konsumohet, e shihni se sa kërkohen burime në një sistem të vetëm, e jo përmes e-maileve dhe shëtitjeve te shefat e departamenteve);
- Mundësia për të reduktuar numrin e personelit IT mbështetës.
Autorët e artikullit: Aleksandër Çelakov (CCIE RS, CCIE SP) dhe Pavel Kirillov. Na intereson të diskutojmë dhe propozojmë zgjidhje mbi temën e Automatizimit të Infrastruktures IT.
Burimi: habr.com
