SDSM on lÔppenud, kuid kontrollimatu soov kirjutada on jÀÀnud.
Pikki aastaid on meie vend kannatanud rutiinse töö tÀitmise alla, paludes sÔrmedega edu enne kommitimist ja saamata und öiste rollback'ide tÔttu.
Aga pimedatele aegadele tuleb lÔp.
Selle artikliga alustan seeriat teemal, kuidas mulle nÀib automatiseerimine.
Liikudes edasi, vaatame ĂŒle automatiseerimise etapid, muutujate salvestamise, disaini formaliseerimise, RestAPI, NETCONF, YANG, YDK ning programmeerime vĂ€ga palju.
Minu tĂ€hendab, et a) see ei ole objektiivne tĂ”de, b) mitte absoluutne parim lĂ€henemine, c) minu arvamus vĂ”ib isegi liikuda esimesest viimaseni artiklini â ausalt öeldes, olen ma mustandist avaldamiseni kĂ”ik kaks korda tĂ€ielikult ĂŒmber kirjutanud.
Sisukord
- EesmÀrgid
- VĂ”rk â nagu ĂŒks organism
- Konfiguratsiooni testimine
- Versioonihaldus
- Teenuste jÀlgimine ja iseparandamine
- Tööriistad
- Inventari sĂŒsteem
- IP-ruumi haldamise sĂŒsteem
- VĂ”rguteenuste kirjeldussĂŒsteem
- Seadmete initsialiseerimise mehhanism
- Tarnetööstuse agnostiline konfiguratsioonimudel
- Tarnetööstuse spetsiifiline draiver
- Konfiguratsiooni seadmele edastamise mehhanism
- CI/CD
- Konfiguratsiooni varundamise ja kÔrvalekallete leidmise mehhanism
- JĂ€lgimissĂŒsteem
- KokkuvÔte
PĂŒĂŒan viia ADSMi veidi teistsugusesse formaati vĂ”rreldes SDSMiga. Suured ĂŒksikasjalikud artiklid ilmuvad endiselt, kuid nende vahepeal avaldan vĂ€ikeseid mĂ€rkmeid igapĂ€evasest kogemusest. PĂŒĂŒan siin vĂ”idelda perfektsionismi vastu ja mitte igaĂŒks neist ĂŒle nĂŒhkida.
Kuidas on naljakas, et teist korda peab lÀbima sama teed.
Esialgu pidin ma ise kirjutama artikleid vÔrkudest, sest neid ei olnud venemaal.
NĂŒĂŒd ei suutnud ma leida ulatuslikku dokumenti, mis sĂŒsteematiseeriks automatiseerimise lĂ€henemised ja analĂŒĂŒsiks eespool nimetatud tehnoloogiaid lihtsate praktiliste nĂ€idete abil.
VÔib-olla eksin, seega visake linke vÀÀrtuslikele ressurssidele. Kuid see ei muuda minu otsust kirjutada, sest peamine eesmÀrk on ikkagi enda Ôppimine ja teiste elu lihtsustamine on meeldiv boonus, mis paitab kogemuse levitamise geeni.
PĂŒĂŒame vĂ”tta keskmise suurusega andmekeskuse LAN DC ja töötada vĂ€lja kogu automatiseerimise skeem.
MÔningate asjade tegemine on mul praktiliselt esmakordselt koos teiega.
Selles artiklis kÀsitletud ideedes ja tööriistades ei ole ma originaalne. Dmitri Figoli kanalil on suurepÀrased .
Artiklid sageli kattuvad nendega mitmes aspektis.
LAN DC-s on 4 andmekeskust, umbes 250 lĂŒlitit, pool tosinat ruuterit ja paar tulemĂŒĂŒri.
See ei ole Facebook, kuid piisab, et sĂŒgavalt mĂ”elda automatiseerimisele.
Kuid on arvamus, et kui teil on rohkem kui 1 seade, on automatiseerimine juba vajalik.
Tegelikult on raske ette kujutada, et keegi suudab elada ilma vÀhemalt pÀeva jagu skripte.
Kuigi ma olen kuulnud, et on selliseid ettevĂ”tteid, kus IP-aadresside arvestust hoitakse Excelis ja iga tuhande vĂ”rgu seadme seadistamine toimub kĂ€sitsi, igaĂŒhel on oma ainulaadne konfiguratsioon. Seda vĂ”ib muidugi mĂŒĂŒa kui kaasaegset kunsti, kuid inseneri tunded saavad kindlasti solvatud.
EesmÀrgid
NĂŒĂŒd seame maksimaalselt abstraktsed eesmĂ€rgid:
- VĂ”rk â nagu ĂŒks organism
- Konfiguratsiooni testimine
- VÔrgu oleku versioonimine
- Teenuste jÀlgimine ja iseparandamine
Hiljem selles artiklis vaatame, milliseid vahendeid me kasutame, ning jĂ€rgmistes artiklites eesmĂ€rke ja vahendeid ĂŒksikasjalikult.
VĂ”rk â nagu ĂŒks organism
MÀÀrav fraas tsĂŒkli kohta, kuigi esmapilgul vĂ”ib see tunduda mitte nii oluline: me seadistame vĂ”rku, mitte eraldi seadmeid.
Viimastel aastatel oleme nĂ€inud suundi, et hakkame kĂ€sitlema vĂ”rku kui ĂŒhtset tervikut, sealt ka tuuakse meie ellu Tarkvara mÀÀratletud vĂ”rgundus, Intent Driven Networks ja Autonomous Networks.
Sest mida rakendused vĂ”rult globaalset vajavad: ĂŒhendus punktide A ja B vahel (ja mĂ”nikord +B-J) ning isolatsioon teistest rakendustest ja kasutajatest.

Ja seega on meie ĂŒlesanne selles seerias - luua sĂŒsteem, mis toetab aktuaarseid konfiguratsioone kogu vĂ”rgus, mis jaguneb juba aktuaarseks konfiguratsiooniks igas seadmes vastavalt tema rollile ja asukohale.
SĂŒsteem vĂ”rgu juhtimine tĂ€hendab, et muudatuste tegemiseks pöördume selle poole, ning see omakorda arvutab vajaliku oleku iga seadme jaoks ja seadistab selle.
Nii minimeerime peaaegu nulli kĂ€sitsi CLI-s kĂ€imist â kĂ”ik seadistuste vĂ”i vĂ”rgu disaini muutused peavad olema formalisatsioonitud ja dokumenteritud â ning alles siis saavad nad rakenduda vĂ”rgu vajalikele elementidele.
NĂ€iteks, kui me oleme otsustanud, et alates nĂŒĂŒd peavad rack-lĂŒlitid Kazanis kuulutama kahte vĂ”rku ĂŒhe asemel, siis
- Dokumenteerime esmalt muudatused sĂŒsteemides
- Loome kÔikide vÔrgu seadmete eesmÀrgipÀrase konfiguratsiooni
- KÀivitame vÔrgu konfiguratsiooni vÀrskendamise programmi, mis arvutab vÀlja, mida igast sÔlmpunktist eemaldada, mida lisada, ning viib sÔlmed soovitud olekusse.
Sellegipoolest teeme kÀtega muudatusi ainult esimeses etapis.
Konfiguratsiooni testimine
, et 80% probleemidest tekib konfiguratsiooni muutmise ajal â kaudne tĂ”estus sellele on see, et uusaastapĂŒhade ajal on tavaliselt kĂ”ik rahulik.
Olen isiklikult olnud pealtnĂ€gija kĂŒmnetele laiaulatuslikele seiskumistele inimliku vea tĂ”ttu: vale kĂ€sk, vale konfiguratsiooniharu, unustatud kogukond, kustutatud MPLS globaalselt marsruuteril, seadistatud viis seadet, kuid kuuendal ei mĂ€rgatud viga, commitâitud vanad muudatused, mille tegi keegi teine. Stsenaariume on tohutult.
Automaatika vĂ”imaldab meil teha vĂ€hem vigu, kuid suuremas ulatuses. Nii saab ĂŒhe seadme asemel kogu vĂ”rku segamini ajada.
Aja jooksul on meie vanaisad kontrollinud sisseviidud muudatuste Ôigsust terava vaatamise, rauast munade ja vÔrgu töövÔime abil pÀrast nende kasutuselevÔttu.
Need vanaisad, kelle töö tÔi kaasa seiskumist ja katastroofilisi kahjusid, jÀtavad vÀhem jÀreltulijaid ja peaksid aja jooksul vÀlja surema, kuid evolutsioon on aeglane protsess, ja seetÔttu ei kontrolli kÔik muudetud kohandusi eelnevalt laboris.
Kuid edusammude tipus on need, kes automatiseerivad konfiguratsiooni testimise protsessi ning selle edasise rakendamise vĂ”rku. TeisisĂ”nu â laenatud CI/CD protseduur () arendajatelt.
Ăhes osas vaatame, kuidas seda teostada versioonihaldussĂŒsteemi abil, tĂ”enĂ€oliselt Githubi kaudu.
Niipea kui olete harjunud mĂ”ttega vĂ”rgu CI/CD-st, tundub konfiguratsiooni kontrollimise meetod selle rakendamise kaudu töövĂ”rgus tĂ”eliselt varajanes keskaja ilmalikkusena. Umbes nagu lĂŒĂŒa haamriga tuumapead.
Ideede loomulik jĂ€tk vĂ”rgu juhtimisest ja CI/CD-st on tĂ€ielik konfiguratsiooni versioonihaldus. sĂŒsteemi toimub.
Versioonihaldus
Me vĂ”tame arvesse, et igasuguste muudatuste korral, isegi kĂ”ige vĂ€hematel, isegi ĂŒhel nĂ€htamatul seadmel, liigub kogu vĂ”rk ĂŒhe oleku pealt teise.
Ja me ei tee kunagi kÀsku seadmes, me muudame vÔrgu seisundit.
Kuidas nimetame neid olekuid versioonideks?
Oletame, et praegune versioon on 1.0.0.
Kas Loopback-interfeisi IP-aadress muutus ĂŒhel ToR-il? See on vĂ€iksem versioon - saab numbri 1.0.1.
Kui muutsime BGP-s marsruutide impordi poliitikaid - see on juba tÔsisem - 1.1.0.
Otsustasime loobuda IGP-st ja minna ainult BGP-le - see on juba radikaalne disaini muutus - 2.0.0.
Samuti vÔivad erinevatel andmekeskustel olla erinevad versioonid - vÔrk areneb, paigaldatakse uus varustus, kuskil lisatakse uusi spine-tasemeid, kuskil - mitte jne.
KĂŒsimus me rÀÀgime sellest eraldi artiklis.
Korrutan - iga muutmine (vÀlja arvatud silumise kÀsud) on versiooni uuendamine. Administraatorid peavad olema teavitatud muudatustest kehtivast versioonist.
Sama kehtib muudatuste tagasivĂ”tmise kohta - see ei tĂ€henda viimaste kĂ€skude tĂŒhistamist, see ei ole seadme operatsioonisĂŒsteemi kaudu rollback - see tĂ€hendab, et kogu vĂ”rk viiakse uude (vana) versiooni.
Teenuste jÀlgimine ja iseparandamine
See iseeneslik ĂŒlesanne kaasaegsetes vĂ”rkudes jĂ”uab uuele tasemele.
Tihti praktiseerivad suured teenusepakkujad lÀhenemist, et kukkunud teenus tuleb vÀga kiiresti lÔpetada ja uus kÀivitada, selle asemel, et selgitada vÀlja, mis juhtus.
«VĂ€ga» tĂ€hendab, et igast kĂŒljest tuleb rikkalikult katta jĂ€lgimisega, mis leiab sekundite jooksul isegi kĂ”ige vĂ€iksemad kĂ”rvalekalded normist.
Ja siin ei piisa enam harilikest mÔÔtmetest, nagu liidese koormus vÔi sÔlme kÀttesaadavus. Ka ei piisa jaamas jÀlgimise kÀsitsi jÀlgimisest.
Paljude asjade jaoks peaks olema â jĂ€lgimised sĂŒttisid punaselt ja lĂ€ksid ise plaastrit viima sinna, kus valutab.
Ja siin me jĂ€lgime mitte ainult ĂŒksikute seadmete, vaid ka kogu vĂ”rgu tervist, ja nii valgekarbiga, mis on suhteliselt arusaadav, kui ka musta karbiga, mis on juba keerulisem.
Mida meil on vaja selliste ambitsioonikate plaanide elluviimiseks?
- Omada kÔigi vÔrgus olevate seadmete nimekirja, nende asukohti, rolle, mudeleid, tarkvara versioone.
kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3. - Omada vĂ”rguteenuste kirjeldamise sĂŒsteemi.
IGP, BGP, L2/3VPN, Policy, ACL, NTP, SSH. - Oskama seadme algkÀivitamiseks.
Hostname, Mgmt IP, Mgmt Route, Users, RSA-Keys, LLDP, NETCONF - Seadme konfigureerimine ja konfiguratsiooni viimine soovitud (sealhulgas ka varasema) versioonini.
- Konfiguratsiooni testimine
- Perioodiliselt kontrollida kÔikide seadmete olekut, et tuvastada kÔrvalekaldeid aktuaalsest ning teavitada vastavaid osapoole.
Ăösel lisas keegi vaikselt reegli ACL-i.. - JĂ€lgida töökindlust.
Tööriistad
Tundub piisavalt keeruline, et alustada projekti dekomponeerimist komponentideks.
Ja neid on kĂŒmme:
- Inventari sĂŒsteem
- IP-ruumi haldamise sĂŒsteem
- VĂ”rguteenuste kirjeldussĂŒsteem
- Seadmete initsialiseerimise mehhanism
- Tarnetööstuse agnostiline konfiguratsioonimudel
- Tarnetööstuse spetsiifiline draiver
- Konfiguratsiooni seadmele edastamise mehhanism
- CI/CD
- Konfiguratsiooni varundamise ja kÔrvalekallete leidmise mehhanism
- JĂ€lgimissĂŒsteem
See on muide nĂ€ide sellest, kuidas on muutunud arusaam tsĂŒkli eesmĂ€rkidest â komponente kĂ€sitlevas mustandis oli neid neli.

Illustreerimisel kujutasin ma ette kÔiki komponente ning seadmet.
Ăksikute komponente omavahel suhtlevad.
Mida suurem on plokk, seda rohkem tÀhelepanu tuleb sellele komponendile pöörata.
Komponent 1. InventeerimissĂŒsteem
Ilmselgelt tahame me teada, milline varustus kus asub ja millele on see ĂŒhendatud.
InventeerimissĂŒsteem on igasuguste ettevĂ”tete jaoks hĂ€davajalik osa.
Sageli on ettevĂ”ted seotud spetsiifiliste ĂŒlesannete lahendamiseks erineva inventeerimissĂŒsteemiga, mis on mĂ”eldud vĂ”rguseadmetele.
Artiklite tsĂŒkli kontekstis nimetame seda DCIM-iks â Andmekeskuse infrastruktuuri haldamine. Kuigi DCIM mĂ”iste hĂ”lmab rangelt vĂ”ttes palju rohkem.
Meie ĂŒlesannete jaoks salvestame siin jĂ€rgmised andmed seadme kohta:
- Inventeerimisnumber
- Nimi/kuva
- Mudel (Huawei CE12800, Juniper QFX5120 jt)
- Iseloomulikud parameetrid (plaadid, liidesed jt)
- Roll (Leaf, Spine, Border Router jt)
- Asukoht (regioon, linn, andmekeskus, Rack, unit)
- Seadmete vaheline interconnect
- VÔrgu topoloogia

On selgelt arusaadav, et ka meie tahame teada kogu seda teavet.
Aga kas see aitab automatiseerimise eesmÀrkidel?
Ilma tingimata.
NĂ€iteks teame, et selles andmekeskuses Leaf-lĂŒlititel, kui need on Huawei, peavad krahhi filtreerimiseks ACL-d rakendama VLAN-ide peal, ja kui need on Juniper, siis unit 0 fĂŒĂŒsilise liidese peal.
VÔi peab uue Syslog-serveri paigaldama kÔikidele piirkonna borderitele.
Selles sĂŒsteemis salvestame me ka virtuaalsed vĂ”rguseadmed, nĂ€iteks virtuaalsed marsruuterid vĂ”i route-reflektorid. VĂ”ime lisada DNS-serverid, NTP, Syslog ja ĂŒldiselt kĂ”ike, mis on kuidagi seotud vĂ”rguga.
Komponent 2. IP-ruumi haldamise sĂŒsteem
Jah, ka meie ajal on inimesi, kes peavad Exceli faili abil arvestust prefiksite ja IP-aadresside ĂŒle. Kuid kaasaegne lĂ€henemine on siiski andmebaas, millel on Nginx/Apache frontend, API ja laiad funktsioonid IP-aadresside ja vĂ”rkude haldamiseks, jagatuna VRF-ideks.
IPAM â IP Aadressi Halduse sĂŒsteem.
Meie vajaduste jaoks salvestame selles jÀrgmise teabe:
- VLAN
- VRF
- VÔrgud/AlavÔrgud
- IP-aadressid
- Aadresside sidumine seadmetega, vÔrkude sidumine asukohtade ja VLAN-numbritega

Igal juhul tahame olla kindlad, et kui jagame uue IP-aadressi ToR'i loopback'ile, ei juhtu, et see on juba kellelegi mÀÀratud. VÔi et sama prefiksi oleme kasutanud kaks korda vÔrgu erinevates otstes.
Aga kuidas see aitab automatiseerimisele?
Lihtne.
KĂŒsime sĂŒsteemist prefiksi, millel on Loopback'i roll ja kus on vĂ€ljastamiseks vabade IP-aadresside olemasolu â kui see leitakse, vĂ€ljastame aadressi, kui ei, kĂŒsime uue prefiksi loomist.
VĂ”i seadme konfiguratsiooni loomisel saame samast sĂŒsteemist teada, millises VRF-is peaks liides olema.
Ja kui kĂ€ivitame uue serveri, lĂ€heb skript sĂŒsteemi, et teada saada, millises serveri lĂŒlitises, millises porti ja milline alavĂ”rk on liidesele mÀÀratud â sellest ka vĂ€ljastatakse serveri aadress.
Tuleb soov DCIM ja IPAM ĂŒhendada ĂŒheks sĂŒsteemiks, et mitte dubleerida funktsioone ja mitte hooldada kahte sarnast entsyklopaediate.
Nii me ka teeme.
Komponent 3. VĂ”rguteenuste kirjeldussĂŒsteem
Kui esimesed kaks sĂŒsteemi salvestavad muutujaid, mida tuleb kuidagi kasutada, siis kolmas kirjeldab igale seadme rollile, kuidas see peaks olema seadistatud.
Tasub vĂ€lja tuua kaks erinevat tĂŒĂŒpi vĂ”rguteenuseid:
- Infrastruktuuri
- Klienditeenuseid.
Esimesed on mÔeldud seadme pÔhivÔimaluste ja halduse tagamiseks. Siia kuuluvad VTY, SNMP, NTP, Syslog, AAA, marsruutimisprotokollid, CoPP jne.
Teised korraldavad kliendile teenuse: MPLS L2/L3VPN, GRE, VXLAN, VLAN, L2TP jne.
Muidugi on ka piirjuhtumeid â kuhu liigitada MPLS LDP, BGP? Ja marsruutimisprotokolle vĂ”ivad kasutada kliendid. Kuid see pole pĂ”himĂ”tteline.
MĂ”lemad teenuste tĂŒĂŒbid jaotuvad konfiguratsiooni primitiivideks:
- fĂŒĂŒsilised ja loogilised liidesed (tag, anteg, mtu)
- IP-aadressid ja VRF (IP, IPv6, VRF)
- ACL ja liikluse töötlemise poliitikad
- Protokollid (IGP, BGP, MPLS)
- Marsruutimise poliitikad (prefiksilisted, kogukonnad, ASN-filtrid).
- Teenindavad teenused (SSH, NTP, LLDP, SyslogâŠ)
- Itd.
Kuidas me seda tĂ€pselt teeme, selle ĂŒle pole mul veel aimugi. RÀÀgime sellest eraldi artiklis.

Kui nĂŒĂŒd pisut elulĂ€hedasemalt rÀÀkida, siis vĂ”iksime kirjeldada, et
Leaf-lĂŒliti peab omama BGP-seansse kĂ”igi ĂŒhendatud Spine-lĂŒlititega, importima protsessi ĂŒhendatud vĂ”rgud, vĂ”tma Spine-lĂŒlititelt vastu ainult teatud prefiksiga vĂ”rke. Piirama CoPP IPv6 ND kuni 10 pps jne.
Spines omakorda hoiab seansse kĂ”igi ĂŒhendatud lehtede kanssa, toimides juurreflektoritena, ja vĂ”tab neilt vastu ainult teatud pikkusega marsruute ja teatud kogukonnaga.
Komponent 4. Seadme initsialiseerimise mehhanism
Selle pealkirja all koondan mitmeid tegevusi, mis peavad toimuma, et seade ilmuks radaritele ja sellele saaks kaugelt ligi pÀÀseda.
- Seadmise seadme varude sĂŒsteemi.
- Eraldada haldust IP-aadress.
- Seada seadmele sissepÀÀs:
Hostname, haldus IP-aadress, marsruut haldusvĂ”rku, kasutajad, SSH-vĂ”tmed, protokollid â telnet/SSH/NETCONF
Siin on kolm lÀhenemist:
- TĂ€ielikult kĂ€sitsi. Seade toimetatakse stendile, kus tavainimene sisestab selle sĂŒsteemidesse, ĂŒhendab konsooli ja seadistab. See vĂ”ib töötada vĂ€ikestes staatilistes vĂ”rkudes.
- ZTP â Zero Touch Provisioning. Riistvara tuli, seisis paigal, sai DHCP kaudu aadressi, lĂ€ks spetsiaalsele serverile ja seadistus automaatselt.
- Konsoliserverite infrastruktuur, kus esialgne seadistamine toimub automaatreĆŸiimis konsoolipordi kaudu.
KÔik kolm arutame eraldi artiklis.

Komponent 5. Tootjast sÔltumatu konfiguratsioonimudel
Senini olid kĂ”ik sĂŒsteemid killustatud tĂŒkkidest, mis andsid muutlikke ja deklaratiivseid kirjelduse sellest, mida me vĂ”rgus nĂ€ha tahame. Kuid varem vĂ”i hiljem tuleb tegeleda konkreetsusega.
Sellel etapil kombineeritakse iga konkreetse seadme jaoks primitiivid, teenused ja muutujad konfiguratsioonimudeliks, mis kirjeldab tegelikku kogu konfiguratsiooni konkreetse seadme jaoks, vaid tootjast sÔltumatus vormis.
Mida see samm annab? Miks mitte kohe luua seadme konfiguratsiooni, mille saab lihtsalt laadida?
Tegelikult vĂ”imaldab see lahendada kolm ĂŒlesannet:
- Ăra kohanda ennast konkreetse seadme suhtlusliidese jĂ€rgi. ĂkskĂ”ik, kas see on CLI, NETCONF, RESTCONF, SNMP â mudel jÀÀb samaks.
- Ăra hoia mallide/skripti arvu vastavalt vĂ”rgu tarnijatele, ja juhul kui disain muutub, muuda ĂŒhes ja samas kohas mitmes kohas.
- Laadi seadme konfiguratsioon (varukoopiast), paiguta see tÀpselt sellisesse mudelisse ja compare the target configuration with the existing one to calculate the delta and prepare the configuration patch that will modify only those parts that are necessary or to identify deviations.

Selle etapi tulemusena saame tarnijast sÔltumatu konfiguratsiooni.
Komponent 6. Tarnijale spetsiifiline liidese draiver
Ăra petta end lootusega, et ĂŒhel pĂ€eval saab Cisco seadme konfigureerida tĂ€pselt nagu Juniperi, saatnud neile tĂ€iesti identseid kutsungi. Kuigi valge kastide populaarsus kasvab ja NETCONF, RESTCONF, OpenConfig toetamist on rohkem, erineb nende protokollide kaudu edastatav konkreetne sisu tarnijate lĂ”ikes ja see on ĂŒks nende konkurentsieeliseid, mida nad kergesti ei loobu.
See on umbes sama, nagu OpenContrail ja OpenStack, milles REST API on nende NorthBound-liidese peamine rusikas, ootavad tÀiesti erinevaid kutsungeid.
Nii et viienda sammu kÀigus peab tarnijast sÔltumatu mudel vÔtma kujul, milles see edasi lÀheb riistvarale.
Ja siin on kÔik vahendid head (ei ole): CLI, NETCONF, RESTCONF, SNMP lihtsalt mitte.
SeetÔttu vajame draiverit, mis eelneva sammu tulemuse sisestab konkreetse tarnija vajaliku formaati: CLI kÀskude kogum, XML struktuur.

Komponent 7. Konfiguratsiooni edastamise mehhanism seadmele
Me oleme konfiguratsiooni genereerinud, kuid see tuleb seadmetesse edastada â ja ilmselgelt mitte kĂ€sitsi.
Esiteks, see seab meie ees kĂŒsimuse, millist transporti kasutame? Ja valik tĂ€napĂ€eval on juba suur:
- CLI (telnet, ssh)
- SNMP
- NETCONF
- RESTCONF
- REST API
- OpenFlow (kuigi see jÀÀb nimekirjast vÀlja, kuna see on viis edastada FIB, mitte konfigureerimist)
Selgitame siin asjad selgeks. CLI on pÀrand. SNMP⊠khette.
RESTCONF â veel teadmata asi, REST API-d toetab peaaegu keegi. SeetĂ”ttu keskendume tsĂŒklis NETCONF-ile.
Nagu lugeja juba mĂ”istis, oleme selle hetkeks liidese osas juba otsuse teinud â eelmise sammu tulemus on esitatud valitud liidese formaadis.
Teiseks, aga milliste tööriistade abil me seda teeme?
Siin on valik samuti suur:
- Oma skript vĂ”i platvorm. Varustame end ncclient ja asyncIOâga ning teeme kĂ”ik ise. Mis takistab meil sĂŒsteemi deployâimist nullist?
- Ansible oma rikka vÔrgumoodulite raamatukoguga.
- Salt, mis teeb vÔrgu osas vaevalt midagi ja seondub Napalmiga.
- Isegi Napalm, mis tunneb paar tarnijat ja kÔik, head aega.
- Nornir â veel ĂŒks loom, kelle me tulevikus dissekteerime.
Siin pole veel lemmik valitud â uurime.
Mis on siin veel oluline? Konfiguratsiooni rakendamise tagajÀrjed.
Olgu see edukas vÔi mitte. Kas juurdepÀÀs seadmele on sÀilinud vÔi mitte.
Tundub, et siin aitab commit koos kinnitamise ja seadmele laadimise valideerimisega.
See koos Ă”ige NETCONFâi rakendamisega kitsendab sobivate seadmete ringi â tavalised commitâid ei toeta palju tootjaid. Kuid see on lihtsalt ĂŒks vajalik tingimus RFPâs. Komponent 8. CI/CD

Selleks hetkeks on meil juba kÔikide vÔrguseadmete konfiguratsioon valmis.
Ma ĂŒtlen «kĂ”ikide», sest rÀÀgime vĂ”rguseisundi versioonimisest. Ja isegi kui on vajalik muuta ainult ĂŒhe lĂŒliti seadeid, arvutatakse muudatused kogu vĂ”rgu jaoks. Ilmselgelt vĂ”ivad need enamikus sĂ”lmedes olla nullid.
Kuid nagu juba mainitud, me ei ole ju barbarid, et kÔik kohe tootmisse saata.
Genereeritud konfiguratsioon peab esmalt lĂ€bi minema Pipeline CI/CDâst.
CI/CD tĂ€hendab Continuous Integration, Continuous Deployment. See on lĂ€henemine, kus meeskond ei postita uut suuremat versiooni iga kuue kuu tagant, asendades tĂ€ielikult vana, vaid rakendab pidevalt jĂ€rkjĂ€rgulisi uusi funktsioone vĂ€ikestes osades, millest igaĂŒht testitakse pĂ”hjalikult ĂŒhilduvuse, turvalisuse ja töökindluse osas.
CI/CD tĂ€hendab pidevat integreerimist ja pidevat juurutamist. See on lĂ€henemine, kus meeskond ei avalda uut peamist versiooni iga kuue kuu tagant, asendades tĂ€ielikult vana, vaid rakendab regulaarselt jĂ€rkjĂ€rguliselt uut funktsionaalsust vĂ€ikeste osade kaupa, millest igaĂŒht testitakse pĂ”hjalikult ĂŒhilduvuse, turvalisuse ja toimivuse osas.
Selle jaoks on meil versioonihaldussĂŒsteem, mis jĂ€lgib konfiguratsiooni muudatusi, laboratoorium, kus testitakse, kas klienditeenus ei katke, jĂ€lgimissĂŒsteem, mis kontrollib seda ja viimane samm - muudatuste juurutamine tootmisvĂ”rku.
VÀlja arvatud silumisvÔimalused, peavad kÔik muudatused vÔrgus lÀbima CI/CD torujuhtme - see on meie rahu ja pikka ja Ônnelikku karjÀÀri tagatis.

Komponent 9. Varundus- ja kĂ”rvalekaldumise tuvastamise sĂŒsteem
Varundustest ei ole mĂ”tet ĂŒleliia rÀÀkida.
Lihtsalt salvestame need kas cron'i jÀrgi vÔi konfiguratsiooni muutuse korral git'i.
Kuid teine osa on huvitavam - nende varukoopiate eest peab keegi jĂ€lgima. Ja mĂ”nel juhul peab see keegi minema ja taastama kĂ”ik nagu enne, teistes aga ĂŒtlema kellelegi, et midagi on valesti.
NĂ€iteks, kui tekib uus kasutaja, keda ei ole muutujaid kirja pandud, peab ta olema eemaldatud vĂ”imalikult kaugele hĂ€kkimisest. Ja kui uus tulemĂŒĂŒri reegel - parem mitte puutuda, vĂ”ib-olla on keegi lihtsalt silumise sisse lĂŒlitanud vĂ”i on uus teenus, kes ei ole regulatiivselt kirja pannud, kuid keegi on juba temaga liitunud.
MĂ”ningatest vĂ€ikestest kĂ”rvalekaldumistest kogu vĂ”rgu ulatuses me ei pÀÀse, vaatamata mis tahes automatiseerimissĂŒsteemidele ja tugevale juhtimisele. Probleemide silumiseks ei hakka keegi konfigureerimist sĂŒsteemidesse viima. RÀÀkimata sellest, et neid vĂ”ib isegi konfigureerimis mudel vĂ€lja ei nĂ€ha.
NĂ€iteks, tulemĂŒĂŒri reegel teatud IP-dega pakettide arvu arvestamiseks, probleemi lokaliseerimiseks - tĂ€iesti tavaline ajutine konfiguratsioon.

Komponent 10. JĂ€lgimissĂŒsteem
Alguses ei kavatsenud ma jÀlgimisteemat kÀsitleda - see on mahukas, vaieldav ja keeruline teema. Kuid protsessi kÀigus osutus see automatiseerimise lahutamatuks osaks. Ja mitte mingil juhul ei saa seda tÔhusalt ignoreerida.
MĂ”tte arendamine - see on orgaaniline osa CI/CD protsessist. PĂ€rast konfiguratsiooni juurutamist vĂ”rgus peame olema suutlikud mÀÀrama, kas kĂ”ik on nĂŒĂŒd korras.
Ja jutt ei ole ainult ja mitte niivÔrd liideste kasutamise graafikutest vÔi sÔlmede kÀttesaadavusest, vaid peenemates asjades - vajalike marsruutide olemasolu, nende atribuudid, BGP sessioonide arv, OSPF naabrid, end-to-end funktsionaalsus kÔrgema taseme teenustes.
Kas te ei ole lĂ”petanud logide kogumist vĂ€liserverisse, kas SFlow-agent ei ole katki lĂ€inud, kas jĂ€rjekordades ei ole hakanud dropid kasvama ja kas mĂ”ni prefiksite paar ei ole kaotanud ĂŒhendust?
Me mĂ”tleme selle ĂŒle eraldi artiklis.


KokkuvÔte
Aluseks valisin ĂŒhe tĂ€napĂ€eva andmekeskuse vĂ”rgudisaini â L3 Clos Fabric BGP marsruutimisprotokolliga.
Seekord ehitame vĂ”rku Juniperi pĂ”hjal, sest nĂŒĂŒd on JunOSi liides sarnane vaniljele.
Teeme oma elu keerulisemaks, kasutades ainult avatud lĂ€htekoodiga tööriistu ja mitme tarnija vĂ”rku â seetĂ”ttu valin juhuslikult veel ĂŒhe Ă”nneliku mĂŒĂŒja lisaks Juniperile.
LÀhitulevikus plaanid on jÀrgmised:
Esiteks rÀÀgin virtuaalvÔrkudest. Esiteks, sest ma soovin seda, ja teiseks, sest ilma selleta ei ole infrastruktuuri vÔrgu disain vÀga arusaadav.
Siis rÀÀgime vÔrgu disainist: topoloogiast, marsruutimisest ja poliitikatest.
Kogume laboriseina.
MÔtleme ja vÔib-olla harjutame seadme sisse seadmist vÔrgus.
Ja pÀrast rÀÀgin igast komponendist intiimsetes detailides.
Ja jah, ma ei lubanud elegantset lĂ”petamist selle sarja valmislahendusega. đ
Kasulikud lingid
- Enne sĂŒvenemist seeriasse on soovitatav lugeda Natasha Samoylenko raamatut . VĂ”ib-olla vĂ”iks ka lĂ€bida .
- Kasulik oleks lugeda ka Facebooki andmekeskuse tehastest artiklit Peeter Lapukhovi autorilt.
- Kuidas töötab Overlay SDN, annab teile ĂŒlevaate dokumentatsioon arhitektuurist (varem Open Contrail).
AitÀh
Roman Gorge. TĂ€nu kommentaaride ja paranduste eest.
Artyom Chernobai. KDPV eest.
Allikas: habr.com
