SDM Àr över, men den okontrollerade lusten att skriva finns kvar.
Under mÄnga Är har vÄr bror lidit av att utföra rutinuppgifter, hÄllit tummarna inför commit och lidit av sömnbrist pÄ grund av nattliga rollbacks.
Men mörka tider har ett slut.
Genom den hÀr artikeln inleder jag en serie om hur jag ser automatisering.
Vi kommer att gÄ igenom stegen för automatisering, lagring av variabler, formalisering av design, med RestAPI, NETCONF, YANG, YDK och vi kommer att programmera mycket.
Jag menar att a) detta inte Ă€r en objektiv sanning, b) inte den obestridliga bĂ€sta metoden, c) min syn kan till och med förĂ€ndras under resans gĂ„ng frĂ„n den första till den sista artikeln â Ă€rligt talat har jag skrivit om allt helt tvĂ„ gĂ„nger frĂ„n utkast till publicering.
InnehÄll
- MÄlsÀttningar
- NĂ€tverket â som en enda organism
- Konfigurationstestning
- Versionshantering
- Ăvervakning och sjĂ€lvreparation av tjĂ€nster
- Verktyg
- Inventeringssystem
- IP-administrationssystem
- Beskrivningssystem för nÀtverkstjÀnster
- Enhetens initieringsmekanism
- Vendor-oberoende konfigurationsmodell
- Vendor-specifik grÀnssnittdrivrutin
- Mekanism för att leverera konfiguration till enheten
- CI/CD
- Backup-mekanism och sökning efter avvikelser
- Ăvervakningssystem
- Slutsats
Jag kommer att försöka genomföra ADSM i ett format som skiljer sig nÄgot frÄn SDM. Det kommer fortfarande att förekomma stora, detaljerade nummerartiklar, och mellan dem kommer jag att publicera smÄ anteckningar frÄn det vardagliga livet. Jag ska försöka bekÀmpa perfektionismen hÀr och inte finslipa var och en av dem.
Hur lustigt att behöva gÄ samma vÀg en andra gÄng.
Till en början var jag tvungen att sjÀlv skriva artiklar om nÀtverk eftersom det inte fanns nÄgra pÄ ryska internet.
Nu kunde jag inte hitta ett heltÀckande dokument som systematiserade tillvÀgagÄngssÀtten för automatisering och med enkla, praktiska exempel gick igenom de ovan nÀmnda teknologierna.
Kanske har jag fel, sÄ skicka lÀnkar till bra resurser. Men detta kommer inte att Àndra min beslutsamhet att skriva, eftersom det primÀra mÄlet Àr att lÀra mig nÄgot sjÀlv, och att underlÀtta livet för andra Àr en trevlig bonus som frÀmjar spridningen av kunskap.
Vi ska försöka ta ett medelstort datacenter LAN DC och arbeta fram hela automatiseringsschemat.
Att göra vissa saker kommer jag att göra nÀstan för första gÄngen tillsammans med er.
I de idéer och verktyg som beskrivs hÀr kommer jag inte att vara originell. Dmitry Figol har en utmÀrkt .
Artiklarna kommer i mÄnga avseenden att överlappa med dem.
I LAN DC 4 finns det 4 datacenter, cirka 250 switchar, ett halvdussin routrar och nÄgra brandvÀggar.
Inte Facebook, men tillrÀckligt för att fundera djupt över automatisering.
Det finns en uppfattning om att om du har mer Àn en enhet, sÄ behöver du redan automatisering.
Det Àr faktiskt svÄrt att förestÀlla sig att nÄgon nu kan leva utan minst en hög av skript som kan köras.
Ăven om jag har hört att det finns sĂ„dana företag dĂ€r IP-adresser registreras i Excel, och varje av de tusentals nĂ€tverksenheterna konfigureras manuellt och har sin unika konfiguration. Detta kan sjĂ€lvklart framstĂ€llas som modern konst, men en ingenjörs kĂ€nslor skulle sĂ€kert bli krĂ€nkta.
MÄlsÀttningar
Nu kommer vi att sÀtta upp maximalt abstrakta mÄl:
- NĂ€tverket â som en enda organism
- Konfigurationstestning
- Versionshantering av nÀtverksstatus.
- Ăvervakning och sjĂ€lvreparation av tjĂ€nster
Senare i denna artikel gÄr vi igenom vilka verktyg vi kommer att anvÀnda, och i kommande artiklar bÄde mÄl och medel i detalj.
NĂ€tverket â som en enda organism
Den avgörande frasen i cykeln, Àven om den vid första anblick kan verka obetydlig: vi kommer att konfigurera nÀtverket, inte enskilda enheter..
Under de senaste Ären har vi sett en förskjutning av fokus mot att betrakta nÀtverket som en enda enhet, hÀrifrÄn kommer ocksÄ Software Defined Networking, Intent Driven Networks och Autonomous Networks.
Vad behövs egentligen globalt av nÀtverket för applikationerna: kopplingar mellan punkterna A och B (nÄvÀl, ibland ocksÄ +C-A) och isolering frÄn andra applikationer och anvÀndare.

SĂ„ledes Ă€r vĂ„r uppgift i denna serie â att bygga ett system, som stödjer den aktuella konfigurationen av hela nĂ€tverket, som redan dekomponeras till aktuell konfiguration pĂ„ varje enhet i enlighet med dess roll och plats.
Systemet nÀtverksstyrning innebÀr att vi nÄr ut för att göra Àndringar, och det i sin tur berÀknar det önskade tillstÄndet för varje enhet och konfigurerar det.
PĂ„ sĂ„ sĂ€tt minimerar vi nĂ€stan helt behovet av att anvĂ€nda CLI manuellt â eventuella Ă€ndringar i instĂ€llningarna pĂ„ enheterna eller nĂ€tverksdesignen mĂ„ste formaliseras och dokumenteras â och först dĂ€refter rullas ut till de nödvĂ€ndiga delarna av nĂ€tverket.
Det vill sÀga, till exempel, om vi beslutar att frÄn och med nu ska rack-switchar i Kazan annonsera tvÄ nÀtverk istÀllet för ett, vi
- Först dokumenterar vi Àndringarna i systemen
- Vi genererar den mÄlinriktade konfigurationen för alla nÀtverksenheter
- Vi startar programmet för att uppdatera nÀtverkskonfigurationen, som berÀknar vad som mÄste tas bort pÄ varje nod, vad som ska lÀggas till, och leder noderna till önskat tillstÄnd.
Vid det hÀr laget gör vi manuella Àndringar endast i det första steget.
Konfigurationstestning
, att 80 % av problemen uppstĂ„r vid Ă€ndring av konfigurationen â ett indirekt bevis pĂ„ detta Ă€r att under nyĂ„rshelgen Ă€r det vanligen lugnt.
Jag har personligen bevittnat dussintals globala driftstopp pÄ grund av mÀnskligt misstag: fel kommando, utfört i fel gren av konfigurationen, glömt en community, raderat MPLS globalt pÄ routern, konfigurerat fem enheter, och missat ett fel pÄ den sjÀtte, kommit tillbaka till gamla Àndringar som gjorts av en annan person. Det finns en hel del olika scenarier.
Automatiseringen gör att vi kan begÄ fÀrre misstag, men i större skala. SÄ kan man förstöra inte bara en enhet, utan hela nÀtverket pÄ en gÄng.
Sedan urminnes tider har vÄra förfÀder kontrollerat riktigheten av de förÀndringar som görs med ett skarpt öga, stÄlsatta nerver och nÀtverkets funktion efter deras implementering.
De förfÀder vars arbete ledde till stillestÄnd och katastrofala förluster lÀmnade efter sig fÀrre avkommor och borde med tiden dö ut, men evolutionen Àr en lÄngsam process, och dÀrför kontrollerar inte alla fortfarande Àndringar i labbet.
Men i framkant av utvecklingen finns de som automatiserat processen för att testa konfigurationen, och vidare anvĂ€nde den pĂ„ nĂ€tverket. Med andra ord â lĂ„nat CI/CD-proceduren () frĂ„n utvecklarna.
I en av delarna kommer vi att titta pÄ hur man implementerar detta med hjÀlp av versionskontrollsystem, troligtvis GitHub.
SÄ snart du vÀnjer dig vid tanken pÄ nÀtverks-CI/CD, kommer metoden att kontrollera konfigurationen genom att tillÀmpa den pÄ det arbetsmÀssiga nÀtverket att verka som en tidig medeltida okunnighet. UngefÀr som att slÄ med en hammare pÄ en kÀrnladdning.
En organisk fortsÀttning pÄ idéerna om system för nÀtverkshantering och CI/CD blir fullstÀndig versionshantering av konfigurationen.
Versionshantering
Vi kommer att betrakta att vid varje förÀndring, Àven de mest obetydliga, Àven pÄ en obemÀrkt enhet, övergÄr hela nÀtverket frÄn ett tillstÄnd till ett annat.
Och vi utför alltid inte kommandot pÄ enheten, vi Àndrar nÀtverkets tillstÄnd.
LÄt oss kalla dessa tillstÄnd versioner?
Anta att den nuvarande versionen Àr 1.0.0.
Har IP-adressen för Loopback-grĂ€nssnittet förĂ€ndrats pĂ„ en av ToR:erna? Detta Ă€r en mindre version â den fĂ„r nummer 1.0.1.
Om vi har reviderat ruttimportpolicys i BGP â nĂ„got mer seriöst â blir det redan 1.1.0.
Har vi beslutat att överge IGP och gĂ„ enbart pĂ„ BGP â detta Ă€r redan en radikal designĂ€ndring â 2.0.0.
Olika datacenter kan ha olika versioner â nĂ€tverket utvecklas, ny utrustning installeras, nĂ„gonstans lĂ€ggs nya spinners till, nĂ„gonstans inte, etc.
Om vi kommer att diskutera det i en separat artikel.
Jag upprepar â varje förĂ€ndring (utom diagnostiska kommandon) Ă€r en versionuppdatering. Administratörerna ska informeras om eventuella avvikelser frĂ„n den aktuella versionen.
Samma gĂ€ller för att rulla tillbaka Ă€ndringar â detta Ă€r inte annulleringen av de senaste kommandona, det Ă€r inte rollback med hjĂ€lp av enhetens operativsystem â det Ă€r att föra hela nĂ€tverket till en ny (gammal) version.
Ăvervakning och sjĂ€lvreparation av tjĂ€nster
Detta Àr en sjÀlvklart uppgift i moderna nÀtverk som nÄr en ny nivÄ.
Ofta praktiserar stora tjÀnsteleverantörer att det fallna tjÀnsten mÄste snabbt fixas och höjas upp igen, istÀllet för att undersöka vad som hÀnde.
"Mycket" betyder att man rikligt mÄste klÀ sig i övervakningar som inom sekunder upptÀcker Àven minsta avvikelser frÄn normen.
Och hÀr rÀcker inte de vanliga metrikarna, som grÀnssnittsbelastning eller tillgÀnglighet av noder. Det rÀcker inte heller med att personalen manuellt övervakar dem.
För mĂ„nga saker mĂ„ste det vara â övervakningar lyste rött och gick sjĂ€lva och lade en vĂ€xtplĂ„ster dĂ€r det gör ont.
Och hÀr övervakar vi inte bara enskilda enheter, utan hela nÀtverkets hÀlsa, bÄde som vitbox, vilket Àr ganska förstÄeligt, och som svartbox, vilket Àr mer komplicerat.
Vad behöver vi för att genomföra sÄdana ambitiösa planer?
- Ha en lista över alla enheter i nÀtverket, deras placering, roller, modeller, mjukvaruversioner.
kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3. - Ha ett system för att beskriva nÀtverkstjÀnster.
IGP, BGP, L2/3VPN, Policy, ACL, NTP, SSH. - Kunna initiera en enhet.
VÀrdnamn, Mgmt IP, Mgmt Rutt, AnvÀndare, RSA-nycklar, LLDP, NETCONF - Konfigurera enheten och Äterföra konfigurationen till den önskade (inklusive tidigare) versionen.
- Testa konfigurationen.
- Regelbundet kontrollera statusen för alla enheter för avvikelse frÄn aktuell status och informera berörda parter.
NĂ„gon lade tyst till en regel i ACL pĂ„ natten.. - Ăvervaka driftskompatibiliteten.
Verktyg
Det lÄter tillrÀckligt komplicerat för att börja decomponera projektet i komponenter.
Och det kommer att bli tio av dem:
- Inventeringssystem
- IP-administrationssystem
- Beskrivningssystem för nÀtverkstjÀnster
- Enhetens initieringsmekanism
- Vendor-oberoende konfigurationsmodell
- Vendor-specifik grÀnssnittdrivrutin
- Mekanism för att leverera konfiguration till enheten
- CI/CD
- Backup-mekanism och sökning efter avvikelser
- Ăvervakningssystem
Det hĂ€r Ă€r för övrigt ett exempel pĂ„ hur perspektivet pĂ„ cykelmĂ„len har förĂ€ndrats â i skissens komponenter fanns det fyra.

I illustrationen har jag avbildat alla komponenter och sjÀlva enheten.
Ăvergripande komponenter interagerar med varandra.
Ju större block, desto mer uppmÀrksamhet mÄste Àgnas Ät denna komponent.
Komponent 1. Inventariesystem.
SjÀlvklart vill vi veta vilken utrustning som finns, var den stÄr, och vad den Àr ansluten till.
Inventariesystemet Àr en oumbÀrlig del av varje företag.
Oftast har företaget ett separat inventariesystem för nÀtverksenheter, som löser mer specifika uppgifter.
Inom ramen för artikelcykeln kommer vi att kalla detta DCIM â Data Center Infrastructure Management. Ăven om termen DCIM strikt taget innefattar mycket mer.
För vÄra ÀndamÄl kommer vi att lagra följande information om enheten i det:
- Inventarienummer
- Namn/beskrivning
- Modell (Huawei CE12800, Juniper QFX5120 osv.)
- Karakteristiska parametrar (kort, grÀnssnitt osv.)
- Roll (Leaf, Spine, Border Router osv.)
- Plats (region, stad, datacenter, rack, enhet)
- Interkonnektioner mellan enheter.
- NĂ€tverkstopologi.

Det Àr tydligt att vi sjÀlva vill veta allt detta.
Men hjÀlper det för automatiseringssyften?
SjÀlvklart.
Till exempel vet vi att pĂ„ Leaf-switchar i detta datacenter, om det Ă€r Huawei, bör ACL för att filtrera viss trafik tillĂ€mpas pĂ„ VLAN, och om det Ă€r Juniper â pĂ„ unit 0 pĂ„ den fysiska grĂ€nssnittet.
Eller mÄste vi rulla ut en ny Syslog-server pÄ alla grÀnser i regionen.
I den kommer vi ocksÄ att lagra virtuella nÀtverksenheter, till exempel virtuella routrar eller rout-reflektorer. Vi kan lÀgga till DNS-servrar, NTP, Syslog och allt annat som pÄ nÄgot sÀtt relaterar till nÀtverket.
Komponent 2. IP-utrymmeshanteringssystem.
Ja, Àven idag finns det grupper av mÀnniskor som hÄller reda pÄ prefix och IP-adresser i en Excel-fil. Men den moderna metoden Àr ÀndÄ en databas, med frontend i nginx/apache, API och omfattande funktioner för hantering av IP-adresser och nÀtverk med uppdelning i VRF.
IPAM â IP Address Management.
För vÄra uppgifter i den kommer vi att lagra följande information:
- VLAN
- VRF
- NÀtverk/SubnÀt
- IP-adresser
- Koppling av adresser till enheter, nÀtverk till platser och VLAN-nummer

Ăven hĂ€r Ă€r det tydligt att vi vill vara sĂ€kra pĂ„ att nĂ€r vi tilldelar en ny IP-adress för loopback pĂ„ ToR:en, sĂ„ snubblar vi inte över att den redan har tilldelats nĂ„gon. Eller att vi har anvĂ€nt samma prefix tvĂ„ gĂ„nger i olika Ă€ndar av nĂ€tverket.
Men hur hjÀlper detta med automatiseringen?
Enkelt.
Vi begĂ€r ett prefix med rollen Loopbacks i systemet, dĂ€r tillgĂ€ngliga IP-adresser finns för tilldelning â om det finns, tilldelar vi adressen, om inte, begĂ€r vi skapandet av ett nytt prefix.
Eller vid skapandet av en enhetskonfiguration kan vi frÄn samma system ta reda pÄ vilket VRF grÀnssnittet ska ligga i.
Och vid uppstart av en ny server gĂ„r skriptet in i systemet, tar reda pĂ„ vilken server-switch, vilken port och vilket subnĂ€t som Ă€r tilldelat grĂ€nssnittet â och dĂ€rifrĂ„n tilldelar vi serverns adress.
Det framstÄr som naturligt att förena DCIM och IPAM i ett system, sÄ att funktioner inte dupliceras och vi inte behöver underhÄlla tvÄ liknande entiteter.
Och sÄ kommer vi att göra.
Komponent 3. System för beskrivning av nÀttjÀnster
Om de första tvÄ systemen lagrar variabler som behöver anvÀndas pÄ nÄgot sÀtt, sÄ beskriver det tredje för varje role av enhet hur den ska konfigureras.
Det Àr vÀrt att lyfta fram tvÄ olika typer av nÀttjÀnster:
- Infrastruktur
- Kunder.
De första syftar till att sÀkerstÀlla grundlÀggande konnektivitet och hantering av enheten. HÀr kan vi inkludera VTY, SNMP, NTP, Syslog, AAA, routingprotokoll, CoPP, etc.
De andra organiserar en tjÀnst för kunden: MPLS L2/L3VPN, GRE, VXLAN, VLAN, L2TP, etc.
Naturligtvis finns det Ă€ven grĂ€nsfall â hur ska man kategorisera MPLS LDP, BGP? Och routingprotokoll kan anvĂ€ndas för kunder. Men det Ă€r inte avgörande.
BÄda typerna av tjÀnster bryts ner i konfigurationsprimitiv:
- fysiska och logiska grÀnssnitt (tag/untag, mtu)
- IP-adresser och VRF (IP, IPv6, VRF)
- ACL och trafikbehandlingspolicyer
- Protokoll (IGP, BGP, MPLS)
- Routingpolicyer (prefixlistor, community, ASN-filter).
- TjĂ€nsteserverar (SSH, NTP, LLDP, SyslogâŠ)
- m.fl.
Hur exakt vi kommer att göra detta vet jag inte Àn. Vi ska ta itu med det i en separat artikel.

Om vi skulle se lite mer realistiskt kan vi beskriva att
Leaf-switchar mÄste ha BGP-sessioner med alla anslutna Spine-switchar, importera de anslutna nÀtverken i processen och ta emot nÀtverk frÄn Spine-switchar endast med en viss prefix. BegrÀnsa CoPP IPv6 ND till 10 pps m.m.
Spine-switcharna hÄller Ä sin sida sessioner med alla anslutna leaf-switchar, fungerar som root-reflektorer och tar emot endast rutter av viss lÀngd och med viss community.
Komponent 4. Enhetens initieringsmekanism
Under denna rubrik sammanfattar jag en mÀngd ÄtgÀrder som mÄste ske för att enheten ska dyka upp pÄ radarn och kunna nÄs pÄ distans.
- FĂ„ enheten in i inventariesystemet.
- Tilldela en IP-adress för hantering.
- Konfigurera grundlÀggande Ätkomst till den:
VĂ€rdnamn, IP-adress för hantering, rutt till hanteringsnĂ€tverket, anvĂ€ndare, SSH-nycklar, protokoll â telnet/SSH/NETCONF
Det finns tre angreppssÀtt:
- Helt manuellt. Enheten levereras till en plattform dÀr en vanlig organisk mÀnniska registrerar den i systemen, ansluter med en konsol och konfigurerar den. Kan fungera pÄ smÄ, statiska nÀtverk.
- ZTP â Zero Touch Provisioning. Utrustningen har anlĂ€nt, stĂ€llt sig pĂ„ plats, fĂ„tt en adress via DHCP, besökt en specifik server och sjĂ€lvkonfigurerat.
- Infrastruktur av konsolservrar dÀr den första konfigurationen sker via konsolporten i automatisk lÀge.
Vi kommer att diskutera alla tre i en separat artikel.

Komponent 5. Leverantörsagnostisk konfigurationsmodell
Hittills har alla system varit separata lappar som ger variabel och deklarativ beskrivning av vad vi skulle vilja se pÄ nÀtverket. Men förr eller senare kommer vi att behöva hantera konkretisering.
I det hÀr skedet kombineras primitiva, tjÀnster och variabler för varje specifik enhet i en konfigurationsmodell, som faktiskt beskriver den fullstÀndiga konfigurationen av den specifika enheten, men pÄ ett leverantörsoberoende sÀtt.
Vad ger detta steg? Varför skulle man inte direkt skapa en enhetskonfiguration som kan laddas upp?
I sjÀlva verket lÄter det oss lösa tre uppgifter:
- Anpassa dig inte till ett specifikt grĂ€nssnitt för interaktion med enheten. Oavsett om det Ă€r CLI, NETCONF, RESTCONF, SNMP â modellen kommer att vara densamma.
- BehÄll inte antalet mallar/skript efter antalet leverantörer i nÀtverket, och vid förÀndringar i designen, Àndra samma sak pÄ flera stÀllen.
- Ladda konfigurationen frÄn enheten (backup), strukturera den i exakt samma modell och jÀmför direkt den mÄlkonfigurationen med den befintliga för att berÀkna skillnaden och förbereda en konfigurationspatch som endast Àndrar de delar som behövs eller för att identifiera avvikelser.

Som ett resultat av detta steg fÄr vi en leverantörsoberoende konfiguration.
Komponent 6. Leverantörsspecifik grÀnssnittdrivrutin
Tro inte att man en dag kan konfigurera Cisco pÄ samma sÀtt som Juniper, bara genom att skicka helt identiska anrop till dem. Trots att whiteboxar blir mer populÀra och stödet för NETCONF, RESTCONF, OpenConfig dyker upp, skiljer sig det specifika innehÄllet som dessa protokoll levererar frÄn leverantör till leverantör, och det Àr en av deras konkurrensfördelar som de inte kommer att ge upp sÄ enkelt.
Det Àr ungefÀr som OpenContrail och OpenStack, som har RestAPI som sitt NorthBound-grÀnssnitt, förvÀntar sig helt olika anrop.
SÄ pÄ femte steget mÄste den leverantörsoberoende modellen ta den form som den kommer att skickas till hÄrdvaran.
Och hÀr Àr alla medel tillÄtna (eller inte): CLI, NETCONF, RESTCONF, SNMP Àr godtagbara.
DÀrför behöver vi en drivrutin som omvandlar resultatet frÄn föregÄende steg till det format som krÀvs av den specifika leverantören: ett set CLI-kommandon, en XML-struktur.

Komponent 7. Mekanism för distribution av konfigurationen till enheten
Vi har genererat konfigurationen, men den mĂ„ste fortfarande levereras till enheterna â och uppenbarligen inte för hand.
För det första, hÀr uppstÄr frÄgan om vilket transportmedel vi ska anvÀnda? Och valet idag Àr inte litet:
- CLI (telnet, ssh)
- SNMP
- NETCONF
- RESTCONF
- REST API
- OpenFlow (Àven om det faller utanför listan eftersom det Àr ett sÀtt att leverera FIB, och inte instÀllningar)
LÄt oss klargöra detta. CLI Àr legacy. SNMP⊠ehm.
RESTCONF â Ă€r fortfarande en okĂ€nd best, REST API stöds nĂ€stan av ingen. DĂ€rför kommer vi att fokusera pĂ„ NETCONF i cykeln.
Som lĂ€saren redan har förstĂ„tt, har vi vid det hĂ€r laget definierat anvĂ€ndargrĂ€nssnittet â resultatet frĂ„n föregĂ„ende steg presenteras redan i formen av det valda grĂ€nssnittet.
För det andra, och vilka verktyg kommer vi att anvÀnda för detta?
HÀr finns det ocksÄ mÄnga alternativ:
- Ett skrÀddarsytt skript eller en plattform. Vi kan utrusta oss med ncclient och asyncIO och göra allt sjÀlva. Vad stoppar oss frÄn att bygga ett distributionssystem frÄn grunden?
- Ansible med sitt omfattande bibliotek av nÀtverksmoduler.
- Salt med sin begrÀnsade nÀtverksfunktionalitet och kopplingen till Napalm.
- Egentligen Napalm, som kÀnner till nÄgra leverantörer och det Àr allt, adjö.
- Nornir â ytterligare ett djur som vi kommer att dissekera i framtiden.
HĂ€r har vi Ă€nnu inte valt nĂ„gon favorit â vi kommer att utforska.
Vad Àr ocksÄ viktigt hÀr? Konsekvenserna av konfigurationsanvÀndning.
Om det var framgÄngsrikt eller inte. Om vi fortfarande har tillgÄng till enheten eller inte.
Det verkar som att commit med bekrÀftelse och validering av vad som laddades ner till enheten kan hjÀlpa hÀr.
Detta, tillsammans med en korrekt implementering av NETCONF, minskar avsevĂ€rt antalet lĂ€mpliga enheter â normala commits stöds inte av mĂ„nga tillverkare. Men detta Ă€r bara ett av de obligatoriska villkoren i . Ingen verkar bry sig om att ingen rysk leverantör kommer att klara kravet pĂ„ 32*100GE grĂ€nssnitt. Eller gör de?

Komponent 8. CI/CD
Vid det hÀr laget har vi redan en konfiguration klar för alla nÀtverksenheter.
Jag sÀger "alla", eftersom vi pratar om versionhantering av nÀtverkets tillstÄnd. Och Àven om det behövs göra Àndringar i instÀllningarna för bara en switch, berÀknas Àndringarna för hela nÀtverket. Det Àr uppenbart att de kan vara noll för de flesta noder.
Men som nÀmnts ovan, vi Àr inte nÄgra barbarer som rullar ut allt pÄ en gÄng i produktion.
Den genererade konfigurationen mÄste först passera genom CI/CD-pipelinen.
CI/CD stÄr för Continuous Integration, Continuous Deployment. Detta Àr en metod dÀr teamet inte slÀpper en ny stor version varje halvÄr och helt ersÀtter den gamla, utan regelbundet implementerar (Deployment) ny funktionalitet i smÄ portioner, var och en av dem testas noggrant för kompatibilitet, sÀkerhet och funktionalitet (Integration).
För detta har vi ett versionskontrollsystem som övervakar förÀndringar i konfigurationen, ett laboratorium som kontrollerar att kundtjÀnsten inte kraschar, ett övervakningssystem som verifierar detta faktum, och det sista steget Àr att rulla ut Àndringarna i produktionsnÀtverket.
Förutom felsökningskommandon mĂ„ste alla Ă€ndringar i nĂ€tverket gĂ„ igenom CI/CD-pipelinen â det Ă€r vĂ„r garanti för ett bekymmersfritt liv och en lĂ„ng och lycklig karriĂ€r.

Komponent 9. Backup- och avvikelsehanteringssystem
Vi behöver nog inte prata mer om backups.
Vi kommer bara att lagra dem per cron eller vid faktiska förÀndringar i konfigurationen i git.
Men den andra delen Ă€r mer intressant â nĂ„gon mĂ„ste hĂ„lla ett öga pĂ„ dessa backups. I vissa fall mĂ„ste den personen gĂ„ tillbaka och Ă„terstĂ€lla allt som det var, och i andra fall, informera nĂ„gon om att det Ă€r nĂ„got som Ă€r fel.
Till exempel, om en ny anvĂ€ndare dyker upp som inte Ă€r registrerad i variablerna, mĂ„ste vi ta bort denne frĂ„n hacken. Och om det Ă€r en ny brandvĂ€ggsregel â bĂ€ttre att inte röra, kanske nĂ„gon bara har aktiverat felsökning, eller sĂ„ har en ny tjĂ€nst, slarvigt, registrerats utanför reglerna, men folk har redan börjat anvĂ€nda den.
Vi kommer ÀndÄ inte att undvika en viss liten delta i skalan av hela nÀtverket, oavsett vilka automatiseringssystem och den fasta hand som ledningen har. Ingen kommer ÀndÄ att göra Àndringar i konfigurationen för att felsöka problem. Dessutom kanske den inte ens förutses i konfigurationsmodellen.
Till exempel, en brandvĂ€ggsregel för att rĂ€kna antalet paket till en viss IP, för att lokalisera problemet â Ă€r en helt vanlig temporĂ€r konfiguration.

Komponent 10. Ăvervakningssystem
I början hade jag inte tĂ€nkt ta upp övervakning â det Ă€r trots allt ett omfattande, kontroversiellt och komplext Ă€mne. Men under tiden har det visat sig vara en oersĂ€ttlig del av automatiseringen. Och att undvika det, Ă€ven utan praktiska erfarenheter, Ă€r inte möjligt.
Vid en vidareutveckling av tanken â det Ă€r en organisk del av CI/CD-processen. Efter att konfigurationen har rullats ut i nĂ€tverket, mĂ„ste vi kunna avgöra om allt Ă€r i ordning nu.
Och det handlar inte bara om anvĂ€ndningsgrafer för grĂ€nssnitt eller nodernas tillgĂ€nglighet, utan om mer subtila saker â tillgĂ„ng till nödvĂ€ndiga rutter, attribut pĂ„ dem, antal BGP-sessioner, OSPF-grannar, End-to-End-funktionaliteten hos överliggande tjĂ€nster.
Har loggarna slutat att skickas till den externa servern, har SFlow-agenten slutat fungera, har dropparna i köerna ökat, eller har kopplingen mellan nÄgot par prefix blivit bruten?
I en separat artikel kommer vi att reflektera över detta ocksÄ.


Slutsats
Som grund har jag valt en av de moderna designerna för datacenter-nĂ€tverk â L3 Clos Fabric med BGP som routingprotokoll.
Denna gÄng kommer vi att bygga nÀtverket pÄ Juniper, för nu Àr JunOs-grÀnssnittet en skönhet.
Vi kommer att komplicera vĂ„rt liv genom att anvĂ€nda endast Open Source-verktyg och en multivendor-nĂ€tverk â dĂ€rför kommer jag, förutom Juniper, att vĂ€lja ytterligare en lycklig kandidat.
Planen för kommande publiceringar ser ut ungefÀr sÄ hÀr:
Först kommer jag att prata om virtuella nÀtverk. Först och frÀmst för att jag vill, och för det andra för att utan detta kommer designen av infrastruktur-nÀtverket inte att vara sÀrskilt tydlig.
Sedan handlar det om nÀtverksdesign: topologi, routing, policies.
Vi ska sÀtta ihop en laboratorieuppstÀllning.
Vi kommer att reflektera och kanske öva pÄ att initiera en enhet i nÀtverket.
Och sedan kommer vi att dyka ner i varje komponent i intima detaljer.
Och ja, jag lovar inte att elegant avsluta denna cykel med en fĂ€rdig lösning. đ
Nyttiga lÀnkar
- Innan vi gÄr djupare in i serien kan det vara bra att lÀsa boken av Natasha Samoylenko . Och kanske ocksÄ gÄ igenom .
- Det kan vara anvÀndbart att lÀsa om designen av datacenterfabriker frÄn Facebook, skriven av Petr Lapukhov.
- Dokumentationen om arkitekturen för Overlay SDN kommer att ge en förstÄelse för hur det fungerar (tidigare Open Contrail).
Tack
Roman Gorge. För kommentarer och korrigeringar.
Artyom Chernobai. För KDPV.
KĂ€lla: habr.com
