Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

SDSMi lÔppes, aga kontrollimatu soov kirjutada on jÀÀnud.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Pikki aastaid on meie vend kannatanud rutiinse töö tegemise all, ristunud sÔrmed enne commit'i ja unetuks jÀÀnud öiste rollback'ide tÔttu.
Aga tumedatele aegadele tuleb lÔpp.

Selle artikliga alustan seeriat sellest, kuidas mulle automaatika paistab.
Teeme ĂŒle etapid automaatikas, muutuja salvestamise, disaini formaliseerimise, RestAPI, NETCONF, YANG, YDK ja programmeerime palju.
Minu tĂ€hendab, et a) see pole objektiivne tĂ”de, b) mitte absoluutne parim lĂ€henemine c) minu vaated vĂ”ivad isegi liikuda esimesest artiklist viimase juurde — ausalt öeldes, mustandist avaldamiseni olen kĂ”ik tĂ€ielikult kaks korda ĂŒmber kirjutanud.

Sisu

  1. EesmÀrgid
    1. VĂ”rk — nagu ĂŒks organism
    2. Konfiguratsiooni testimine
    3. Versioonimine
    4. Teenuste jÀlgimine ja enese taastamine

  2. Tööriistad
    1. Inventeerimisse sĂŒsteem
    2. IP-ruumi haldamise sĂŒsteem
    3. VĂ”rguteenuste kirjeldamise sĂŒsteem
    4. Seadmete initsialiseerimise mehhanism
    5. MĂŒĂŒgi sĂ”ltumatu konfiguratsioonimudel
    6. MĂŒĂŒja-spetsiifiline seadme draiver
    7. Konfiguratsiooni seadmesse saatmise mehhanism
    8. CI/CD
    9. Andmete varundamise ja kÔrvalekallete otsimise mehhanism
    10. JĂ€lgimisseade

  3. KokkuvÔte

Proovin ADSMi juhtida veidi erinevas formaadis kui SDMS. Suured, pĂ”hjalikud numbrilised lood jĂ€tkuvad, kuid nende vahele avaldan igapĂ€evaelust vĂ€ikeseid mĂ€rkmeid. PĂŒĂŒan ka siin perfektsionismiga vĂ”idelda ja mitte igaĂŒht liiga palju lihvida.

On naljakas, et teist korda tuleb lÀbida sama teed.

Alguses pidin ise kirjutama artikleid vÔrkude kohta, sest neid ei olnud venekeelses internetis.

NĂŒĂŒd ei suutnud ma leida ĂŒhtegi pĂ”hjalikku dokumenti, mis sĂŒsteemiliselt kĂ€sitleks automatiseerimise lĂ€henemisviise ning tutvustaks eeltoodud tehnoloogiaid lihtsate praktiliste nĂ€idete abil.

VÔib-olla ma eksin, seega saatke lingid headest ressurssidest. Siiski ei muuda see minu otsust kirjutada, sest peamine eesmÀrk on ikkagi Ôppida midagi ise, ja lÀhedaste elu lihtsustamine on meeldiv boonus, mis hellitab kogemuste levimise geeni.

PĂŒĂŒdleme keskmise suurusega LAN DC andmekeskuse poole ja töötame vĂ€lja kogu automatiseerimise skeemi.
MÔningaid asju teen ma koos teiega praktiliselt esmakordselt.

Siin kirjeldatud ideedel ja tööriistadel ei ole mul suurt originaalsust. Dmitri Figoly'l on suurepĂ€rane kanal selle teema kohta otseĂŒlekannete jaoks..
Artiklid kattuvad mitmetes aspektides nende ideedega.

LAN DC-s on 4 andmekeskust, umbes 250 lĂŒlitit, paar marsruuterit ja paar tulemĂŒĂŒri.
See pole Facebook, aga piisav, et sĂŒgavalt mĂ”elda automatiseerimisele.
KĂ€ib kĂŒll mĂŒĂŒt, et kui teil on rohkem kui 1 seade, on automatiseerimine juba vajalik.
Tegelikult on raske ette kujutada, et keegi suudab nĂŒĂŒd elada ilma vĂ€hemalt kamp skriptidest.
Kuigi olen kuulnud, et on selliseid ettevÔtteid, kus IP-aadresside arvestust peetakse Excelis, iga tuhandete vÔrguseadmete seadistamine kÀib kÀsitsi ja igal neist on oma kordumatu konfiguratsioon. Seda vÔib muidugi pidada kaasaegsesse kunstiks, aga inseneri tunded on kindlasti solvatud.

EesmÀrgid

Praegu seame me maksimaalselt abstraktsed eesmÀrgid:

  • VĂ”rk — nagu ĂŒks organism
  • Konfiguratsiooni testimine
  • VĂ”rgu oleku versioonimine.
  • Teenuste jĂ€lgimine ja enese taastamine

Hiljem selles artiklis kÀsitleme, milliseid vahendeid kasutame, ja jÀrgmistes tÀpsustame nii eesmÀrke kui ka vahendeid.

VĂ”rk — nagu ĂŒks organism

MÀÀrav tsĂŒkkel, kuigi esmapilgul vĂ”ib see tunduda mitte nii oluline: me seadistame vĂ”rku, mitte eraldiseisvaid seadmeid.
Viimastel aastatel oleme mĂ€rganud suunda, kus vĂ”rku kĂ€sitletakse kui ĂŒhtset ĂŒksust, seetĂ”ttu ilmuvad meie ellu Tarkvara MÀÀratud VĂ”rgud, Intent Driven Networks ja Autonoomsed vĂ”rgud.
Mida rakendused vĂ”rgu puhul globaalsetel eesmĂ€rkidel vajavad: ĂŒhendus punktide A ja B vahel (mĂ”nikord ka +B-Y) ja isolatsioon teiste rakenduste ja kasutajate eest.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Seega on meie ĂŒlesanne selles seerias — ehitada sĂŒsteem, mis toetab aktuaarset konfiguratsiooni kogu vĂ”rgu, mis juba dekomponeeritakse aktuaalsesse konfiguratsiooni igas seadmes vastavalt selle rollile ja asukohale.
SĂŒsteem vĂ”rgu haldamine tĂ€hendab, et muudatuste tegemiseks pöördume selle poole, ning see arvutab vajalikku olekut igas seadmes ja seadistab selle.
Nii vĂ€hendame praktiliselt nullini kĂ€sitsi CLI-s liikumise — kĂ”ik seadmete seadistustes vĂ”i vĂ”rgu disainis tehtavad muudatused peavad olema formaliseeritud ja dokumenteeritud — ja alles siis rakendatakse need vajalikele vĂ”rgu elementidele.

See, for example, if we decided that from now on, the rack switches in Kazan should announce two networks instead of one, we

  1. First, we document the changes in the systems
  2. We generate the target configuration for all network devices
  3. We launch the network configuration update program, which calculates what needs to be removed on each node, what to add, and brings the nodes to the desired state.

At the same time, we manually make changes only at the first step.

Konfiguratsiooni testimine

It is known, that 80% of problems occur during configuration changes — an indirect indication is that during the New Year holidays, everything is usually calm.
I have personally witnessed dozens of global downtimes due to human error: running an incorrect command, executing it in the wrong configuration branch, forgetting to notify the community, globally deleting MPLS on a router, configuring five devices, and missing an error on the sixth, committing old changes made by someone else. The scenarios are countless.

Automation will allow us to make fewer mistakes, but on a larger scale. This way, we can brick not just one device, but the entire network at once.

Aegade jooksul on meie vanaisad kontrollinud muudatuste Ôigsust terava silmaga, tipptehnoloogia ja vÔrgu töökindluse abil pÀrast nende juurutamist.
Need vanaisad, kelle tööd tÔid kaasa seiskamisi ja katastroofilisi kahjusid, jÀtsid vÀhem jÀrglasi ja pidid ajaga vÀlja surema, kuid evolutsiooniprotsess on aeglane ning seetÔttu ei kontrolli kÔik siiani muudatusi laboratooriumis ette.
Kuid progressi tipus on need, kes automatiseerisid konfiguratsiooni testimise protsessi ning selle edasise rakendamise vĂ”rku. TeisisĂ”nu — laenatud CI/CD protseduur (Continuous Integration, Continuous Deployment) arendajatelt.
Üks osa kĂ€sitleb, kuidas seda rakendada versioonihaldussĂŒsteemiga, tĂ”enĂ€oliselt GitHubiga.

Kui olete harjunud mĂ”ttega vĂ”rgu CI/CD-st, tundub teise konfiguratsiooni kontrollimise meetod selle rakendamise kaudu töösse vĂ”rku ĂŒhel hetkel varakeskaegse inimesena. Umbes nagu lĂŒĂŒa haamriga tuumarelvade kallale.

Ideede loogiline jĂ€tk sĂŒsteemile vĂ”rgu juhtimise ja CI/CD osas on tĂ€ielik konfiguratsiooni versioonimine.

Versioonimine

Kujutame ette, et iga muudatuse korral, isegi kĂ”ige vĂ€hesema, isegi ĂŒhel mĂ€rkamatul seadmel, muutub kogu vĂ”rk ĂŒhest olekust teise.
Ja me ei tÀida kunagi kÀsku seadmes, me muutume vÔrgustikku.
Kuidas kutsuda neid olekuid versioonideks?

Oletame, et praegune versioon on 1.0.0.
Kui Loopback-liidese IP-aadress muutus ĂŒhes ToR-seadmest, on see vĂ€ike versioon — saab numbri 1.0.1.
Muutisime BGP-s marsruudi impordi poliitikaid — pisut tĂ”sisem — juba 1.1.0.
Otsustasime loobuda IGP-st ja minna ainult BGP peale — see on juba radikaalne disainimuudatus — 2.0.0.

Erinevate andmekeskuste versioonid vĂ”ivad olla erinevad — vĂ”rk areneb, paigaldatakse uus varustus, kuskil lisanduvad uued spina tasemed, kuskil — ei, jne.

Umbes semantiline versioneerimine me rÀÀgime sellest eraldi artiklis.

Kordan — iga muudatus (vĂ€lja arvatud silumis kĂ€sud) on versiooniuuendus. KĂ”ikest kĂ”rvalekaldumistest kehtivast versioonist peavad administraatorid olema teavitatud.

Sama kehtib ka muudatuste tagasikutsumise kohta - see ei ole viimaste kĂ€skude tĂŒhistamine, see ei ole seadme opsĂŒsteemi kaudu teostatud rollback - see on kogu vĂ”rgu viimine uut (vana) versiooni.

Teenuste jÀlgimine ja enese taastamine

See iseenesestmĂ”istetav ĂŒlesanne tĂ€napĂ€evastes vĂ”rkudes tĂ”useb uuele tasemele.
Sageli praktiseerivad suured teenusepakkujad lĂ€henemist, et kukkunud teenus tuleb kiiresti korda teha ja uus pĂŒstitada, selle asemel et uurida, mis juhtus.
„Kiire” tĂ€hendab, et kĂ”ikjalt tuleb ĂŒmbritseda end jĂ€lgimisega, mis mĂ”ne sekundi jooksul tuvastab vĂ€himadki kĂ”rvalekalded normist.
Ja siin ei piisa enam harjumuspĂ€rasest mÔÔtmisest, nagu liidese koormus vĂ”i sĂ”lme kĂ€ttesaadavus. Ei piisa ka deĆŸuuriva töötaja kĂ€sitsi jĂ€lgimisest.
Paljuski peab olema Self-Healing — monitorid pĂ”levad punases ja lĂ€hevad ise kummeli lehte leidma, kus valutab.

Ja siin jĂ€lgime me mitte ainult ĂŒksikute seadmete, vaid ka kogu vĂ”rgu tervist, samuti nii valgekarbi lĂ€henemisest, mis on suhteliselt selge, kui ka musta karbi lĂ€henemisest, mis on juba keerulisem.

Mida vajame selliste ambitsioonikate plaanide elluviimiseks?

  • Ole kĂ”ikide vĂ”rgu seadmete loend, nende asukohad, rollid, mudelid ja tarkvaraversioonid.
    kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3.
  • Ole sĂŒsteem, mis kirjeldab vĂ”rgu teenuseid.
    IGP, BGP, L2/3VPN, Poliitika, ACL, NTP, SSH.
  • Osata seadet initsialiseerida.
    Hostname, Mgmt IP, Mgmt Route, Kasutajad, RSA-vÔtmed, LLDP, NETCONF
  • Seadistada seade ja viia konfiguratsioon soovitud (ka vanemasse) versiooni.
  • Testida konfiguratsiooni
  • Perioodiliselt kontrollida kĂ”ikide seadmete seisukorda, et tuvastada kĂ”rvalekaldeid ja informeerida vajalikku isikut.
    Öösel lisas keegi vaikselt reeglile ACL..
  • JĂ€lgida töökorrasolekut.

Tööriistad

Tundub piisavalt keeruline, et alustada projekti komponente dekomponeerimist.

Ja neid on kĂŒmme:

  1. Inventeerimisse sĂŒsteem
  2. IP-ruumi haldamise sĂŒsteem
  3. VĂ”rguteenuste kirjeldamise sĂŒsteem
  4. Seadmete initsialiseerimise mehhanism
  5. MĂŒĂŒgi sĂ”ltumatu konfiguratsioonimudel
  6. MĂŒĂŒja-spetsiifiline seadme draiver
  7. Konfiguratsiooni seadmesse saatmise mehhanism
  8. CI/CD
  9. Andmete varundamise ja kÔrvalekallete otsimise mehhanism
  10. JĂ€lgimisseade

See on muide nĂ€ide sellest, kuidas vaade tsĂŒkli eesmĂ€rkidele on aja jooksul muutunud — komponentide mustandis oli neli.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Illustratsioonil olen vÀlja joonistanud kÔik komponendid ja seadme.
Üksteisega suhtlevad ĂŒksteisega kattuvad komponendid.
Mida suurem on plokk, seda rohkem tÀhelepanu tuleb sellele komponendile pöörata.

Komponent 1. InventariseerimissĂŒsteem

Ilmselgelt tahame teada, milline varustus kus asub ja millega see on ĂŒhendatud.
InventariseerimissĂŒsteem on iga ettevĂ”tte lahutamatu osa.
Tavaliselt on ettevĂ”ttel erinev inventeerimissĂŒsteem vĂ”rguseadmete jaoks, mis lahendab spetsiifilisemaid ĂŒlesandeid.
Artiklite seerias nimetame seda DCIM-iks — Data Center Infrastructure Management. Kuigi termin DCIM hĂ”lmab rangelt vĂ”ttes palju rohkem.

Oma ĂŒlesannetes hoiame seal jĂ€rgmisi seadme kohta kĂ€ivaid andmeid:

  • Inventarinumber
  • Nimi/description
  • Mudel (Huawei CE12800, Juniper QFX5120 jne.)
  • Iseloomulikud parameetrid (plaadid, liidesed jne.)
  • Roll (Leaf, Spine, Border Router jne.)
  • Asukoht (region, linn, andmekeskus, rack, unit)
  • Seadmete vahelised interkonektid
  • VĂ”rgu topoloogia

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

On tÀiesti arusaadav, et tahame ise kÔike seda teada.
Kuid kas see aitab automatiseerimise eesmÀrkidel?
Ilmselgelt.
NĂ€iteks teame, et antud andmekeskuses Leaf-lĂŒlititel, kui need on Huawei, tuleks ACL filtreerimiseks rakendada VLAN-is, ja kui need on Juniper, siis fĂŒĂŒsilise liidese unit 0-l.
VÔi tuleb levitada uus Syslog-server kÔigile regiooni piirdele.

Selle eesmĂ€rgi jaoks hoiame me virtuaalseid vĂ”rgu seadmeid, nĂ€iteks virtuaalseid ruutereid vĂ”i rutreflektoreid. Saame lisada DNS-servereid, NTP, Syslog ja ĂŒldiselt kĂ”ike, mis on vĂ”rguga seotud.

Komponent 2. IP-ruumi haldamise sĂŒsteem

Jah, meie ajal on endiselt gruppe inimesi, kes peavad IP-e ja prefikseid Exceli failides. Kuid kaasaegne lÀhenemine on ikkagi andmebaas, millel on frontend nginxi/apache'i, API ja laiad funktsioonid IP-aadresside ja vÔrkude arvestamiseks, jagatuna VRF-ideks.
IPAM — IP Aadressi Halduse sĂŒsteem.

Meie vajaduste jaoks hoiame selles jÀrgmisi andmeid:

  • VLAN
  • VRF
  • VĂ”rgud/SubvĂ”rgud
  • IP-aadressid
  • Aadresside sidumine seadmetega, vĂ”rkude sidumine asukohtade ja VLAN-numbritega

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

On selge, et soovime olla kindlad, et kui mÀÀrame uue IP-aadressi ToR-i loopbackile, ei juhtu, et see on juba kellelegi mÀÀratud. VÔi et sama prefiks on kasutatud kaks korda vÔrgu erinevates otsades.
Aga kuidas see aitab automatiseerimisel?
Lihtne.
KĂŒsimiseks loodud sĂŒsteemis prefiks, millel on Loopbacks roll, kus on saadaval mÀÀramiseks IP-aadressid — kui leiatakse, mÀÀrame aadressi, kui ei, kĂŒsime uue prefiksi loomist.
VĂ”i seadme konfigureerimise loomisel saame samast sĂŒsteemist teada, millises VRF-is peaks liides asuma.
Ja kui uus server kĂ€ivitub, siis skript kontrollib sĂŒsteemis, millises serveri lĂŒlitises, millises porti ja milline alamvĂ”rk on liidesele mÀÀratud — sellest vĂ€ljastatakse serveri aadress.

Tuleb soov DCIM ja IPAM ĂŒhendada ĂŒhte sĂŒsteemi, et mitte dubleerida funktsioone ja mitte teenindada kahte sarnast subjekt.
Nii me ka teeme.

Komponent 3. VĂ”rguteenuste kirjeldamise sĂŒsteem.

Kui esimesed kaks sĂŒsteemi salvestavad muutujaid, mida tuleb kuidagi kasutada, siis kolmas kirjeldab iga seadme rolli jaoks, kuidas see peaks olema seadistatud.
Tasub esile tuua kaks erinevat tĂŒĂŒpi vĂ”rguteenuseid:

  • Infrastruktuuri
  • Klienditeenused.

Esimesed on mÔeldud pÔhiliidese ja seadme haldamise tagamiseks. Siia kuuluvad VTY, SNMP, NTP, Syslog, AAA, marsruutimisprotokollid, CoPP jne.
Teised korraldavad kliendi teenust: MPLS L2/L3VPN, GRE, VXLAN, VLAN, L2TP jne.
Muidugi on ka piiritapjuhud — kuhu liigitada MPLS LDP, BGP? Ja marsruutimisprotokolle vĂ”ib kasutada ka klientide jaoks. Kuid see ei ole pĂ”himĂ”tteline.

MĂ”lemad teenustĂŒĂŒbid jagunevad konfigureeritavateks primitiivideks:

  • fĂŒĂŒsilised ja loogilised liidesed (tahvel/antahvel, mtu)
  • IP-aadressid ja VRF (IP, IPv6, VRF)
  • ACL ja liikluse töötlemise poliitikad
  • Protokollid (IGP, BGP, MPLS)
  • Marsruudistamise poliitikad (prefikside loendid, kogukonnad, ASN-filterid).
  • Teenused (SSH, NTP, LLDP, Syslog
)
  • jne.

Kuidas me seda tÀpselt teeme, ei oska praegu öelda. Tegeleme sellega eraldi artiklis.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Kuid kui minna reaalsuse lÀhedale, vÔiksime kirjeldada, et
Lehe lĂŒliti peab olema BGP-seansid kĂ”ikide ĂŒhendatud Spine-lĂŒlititega, importima ĂŒhendatud vĂ”rke ja aktsepteerima Spine-lĂŒlititest ainult kindlatest prefiksidest vĂ”rke. Piirama CoPP IPv6 ND-d 10 pps jne.
Spine-lĂŒlitid peavad omakorda hoidma seansse kĂ”igi ĂŒhendatud lehtedega, toimides juurepeegeldajatena, ja aktsepteerima nendelt ainult teatud pikkusega marsruute ja teatud kogukonnaga.

Komponent 4. Seadmestiku initsialiseerimise mehhanism

Selle pealkirja all ĂŒhendame mitmeid tegevusi, mis peavad toimuma, et seade ilmuks radaritele ja et sellele saaks kaugjuhtimisse siseneda.

  1. Seade tuleb registreerida inventeerimissĂŒsteemis.
  2. Halda juhte IP-aadress.
  3. Seadista sellele pÔhjuurdepÀÀs:
    Hostname, juhte IP-aadress, haldusvĂ”rgu marsruut, kasutajad, SSH-vĂ”tmed, protokollid — telnet/SSH/NETCONF

Siin on kolm lÀhenemist:

  • KĂ”ik teha kĂ€sitsi. Seade tuuakse lauale, kus tavaline inimene siseneb sĂŒsteemidesse, ĂŒhendub konsooliga ja seadistab. See vĂ”ib töötada vĂ€ikestes staatilistes vĂ”rkudes.
  • ZTP — Zero Touch Provisioning. Riistvara on kohal, paigaldatud, DNS-i saab DHCP-lt ja lĂ€heb eraldi serverisse, et ise seadistuda.
  • Konsooli serverite infrastruktuur, kus esmase seadistamise teeb automaatne konsoolipordist.

KÕIK kolm neist arutame eraldi artiklis.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Komponent 5. Tarnija-agnostiline konfiguratsioonimudel

Siiani on kĂ”ik sĂŒsteemid olnud killustunud tĂŒkid, andes muutlikku ja deklareerivat kirjeldust sellest, mida me sooviksime nĂ€ha vĂ”rgus. Kuid varem vĂ”i hiljem tuleb tegeleda konkreetse asjaga.
Selles etapis kombineeritakse iga konkreetse seadme jaoks primitiivid, teenused ja muutujaid konfiguratsioonimudeliks, mis tegelikult kirjeldab konkreetse seadme tÀielikku konfiguratsiooni tootjaspetsiifiliselt sÔltumatul viisil.
Mida annab see samm? Miks mitte kohe luua seadme konfiguratsioon, mille lihtsalt ĂŒles laadida?
Tegelikult vĂ”imaldab see lahendada kolm ĂŒlesannet:

  1. Ei pea kohanduma konkreetse seadme suhtlusliidese jĂ€rgi. Olgu see CLI, NETCONF, RESTCONF, SNMP — mudel jÀÀb samaks.
  2. Ei pea hoidma ƥablonite/skripte arvu vastavalt vÔrgus olevate tootjate arvule, ning disaini muutumisel, tuleb korraga muuta sama asja mitmes kohas.
  3. Laadida seadmest konfiguratsioon (varukoopia), hajutada see tÀpselt sellesse mudelisse ja otseselt vÔrrelda sihtkonfiguratsiooni olemasolevaga, et arvutada delta ja valmistada meie valmistatav konfiguratsioonipatch, mis muudab ainult neid osi, mis on vajalikud vÔi kÔrvalekallete tuvastamiseks.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Selle etapi tulemusena saame tootjaspetsiifiliselt sÔltumatu konfiguratsiooni.

Komponent 6. Tootjaspetsiifiline liidese draiver

Ärge lootke, et Cisco seadistamine on kunagi sama lihtne kui Juniper, lihtsalt saates neile tĂ€iesti ĂŒhesugused kĂ€sklused. Vaatamata kasvavale valgekarvaliste seadmete populaarsusele ja NETCONF'i, RESTCONF'i, OpenConfig'i toe ilmumisele, on sisuhaldus, mida need protokollid edastavad, erinev igal tootjal ning see on ĂŒks nende konkurentsieeliseid, millest nad lihtsalt ei loobu.
See on umbes sama, kuidas OpenContrail ja OpenStack, mis kasutavad RestAPI-d kui oma pÔhiliidest, ootavad tÀiesti erinevaid kÀsklusi.

Nii et viiendaks sammuks peab tootjavaba mudel vÔtma kuju, millega see jÔuab riistvarani.
Ja siin on kÔik viisid head (mitte tÔesti): CLI, NETCONF, RESTCONF, SNMP ja niisugused lihtsad lahendused.

Seega vajame draiverit, mis eelmist sammu tulemus viib Ôiges formaadis konkreetse tootja jaoks: CLI kÀskude komplekt, XML struktuur.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Komponent 7. Konfiguratsiooni edastamise mehhanism seadmesse.

Konfiguratsioon on genereeritud, kuid see tuleb seadmetesse ka veel toimetada — ja selgelt mitte kĂ€sitsi.
Esiteks, meil on kĂŒsimus, millist transporti kasutame? Ja valik on tĂ€napĂ€eval juba pĂ€ris suur:

  • CLI (telnet, ssh)
  • SNMP
  • NETCONF
  • RESTCONF
  • REST API
  • OpenFlow (kuigi see on nimekirjast vĂ€lja jĂ€etud, kuna see on meetod FIB-i edastamiseks, mitte seadistamiseks)

Kohandame siin mÔned punktid. CLI on vananenud. SNMP
 ahem.
RESTCONF on veel tundmatu loom, REST API-d toetab peaaegu keegi. Seega keskendume tsĂŒklis NETCONF-ile.

Tegelikult, nagu lugeja on tĂ”enĂ€oliselt mĂ”istnud, oleme selle hetkel juba liidese valguses selgusele jĂ”udnud — eelneva sammu tulemus on juba esitatud valitud liidese formaadis.

Teiseks, aga milliste tööriistadega me seda teeme?
Siin on valik samuti suur:

  • Kohandatud skript vĂ”i platvorm. Vaatame ncclienti ja asyncIO-d ning teeme ise kĂ”ik Ă€ra. Mis takistab meil sĂŒsteemi juurutamist nullist?
  • Ansible oma rikkaliku vĂ”rgumoodulite kogumiga.
  • Salt, mille vĂ”rgutöö on miskitki napp ja seotud Napalmiga.
  • Isegi Napalm, kes tunneb paar tootjat ja see ongi kĂ”ik, head aega.
  • Nornir — veel ĂŒks loom, keda me tulevikus uurime.

Siin pole veel lemmik vĂ€lja valitud — hakkame uurima.

Mis siin veel oluline on? Konfiguratsiooni rakendamise tagajÀrjed.
Kas Ônnestub vÔi mitte. Kas juurdepÀÀs seadmele on sÀilinud vÔi mitte.
Tundub, et siin aitab commit koos kinnitamise ja valideerimisega selle kohta, mis seadmesse laaditi.
See koos Ă”igesti rakendatud NETCONF-iga oluliselt kitsendab sobivate seadmete valikut — normaalsed commit'id ei toeta nii palju tootjaid. Kuid see on lihtsalt ĂŒks tingimus, mis peab olema RFP-s. RFP. LĂ”ppkokkuvĂ”ttes ei muretse keegi selle ĂŒle, et ĂŒkski Venemaa tarnija ei vasta 32*100GE liidese nĂ”udele. VĂ”i muretsevad?

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Komponent 8. CI/CD

Selleks ajaks on meil juba kÔikide vÔrgu seadmete konfiguratsioon valmis.
Kirjutan "kĂ”ikide", sest rÀÀgime vĂ”rgu oleku versioonist. Ja isegi kui on vaja muuta ainult ĂŒhe lĂŒliti seadeid, arvutatakse muudatused kogu vĂ”rgu jaoks. Ilmselgelt vĂ”ivad need samal ajal olla nullid enamikus sĂ”lmedes.

Kuid nagu juba varem öeldud, ei ole me ju mingid barbarid, et kÔik kohe tootmisse saata.
Genereritud konfiguratsioon peab esmalt lÀbima Pipeline CI/CD.

CI/CD tĂ€hendab pidevat integreerimist ja pidevat juurutamist. See on lĂ€henemine, kus meeskond ei avalda uut pĂ”hiversiooni kord kuue kuu jooksul, asendades tĂ€ielikult vana, vaid juurutab pidevalt uusimat funktsionaalsust vĂ€ikeste osade kaupa, millest igaĂŒht testitakse pĂ”hjalikult ĂŒhilduvuse, turvalisuse ja funktsionaalsuse osas.

Selleks on meil versioonihaldussĂŒsteem, mis jĂ€lgib konfiguratsiooni muutusi, laboratoorium, kus kontrollitakse, et kliendiservice ei riku, jĂ€lgimisseade, mis kontrollib seda, ja viimane samm — muudatuste tegemine tootmisvĂ”rgus.

VĂ€lja arvatud silumis kĂ€sud, peavad kĂ”ik muudatused vĂ”rgus lĂ€bima CI/CD torujuhtme — see on meie rahuliku elu ja pika Ă”nneliku karjÀÀri garantii.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Komponent 9. VarundussĂŒsteem ja kĂ”rvalekallete leidmine

Backup'idest ei ole mÔtet liialt rÀÀkida.
Paneme need lihtsalt kas cron'i jÀrgi vÔi konfiguratsiooni muutuse korral git'i.

Teine osa on huvitavam — nende varukoopiate ĂŒle peab keegi silma peal hoidma. Ühes olukorras peab see keegi minema ja taastama kĂ”ik tagasi, teises aga peab ta kellelegi kellestki teavitama, et asjad ei ole korras.
NĂ€iteks kui tuleb uus kasutaja, kes ei ole mÀÀratud muutujates, tuleb ta hĂ€kkimise eest eemaldada. Kui on uus tulemĂŒĂŒrireegel — parem seda mitte puudutada, Ă€kki on keegi lihtsalt silumiseks selle sisse lĂŒlitanud, vĂ”i vĂ”ib-olla on uus teenus, karjus, mÀÀranud selle valesti, ja nĂŒĂŒd on sinna juba inimesi tulnud.

Mingist vĂ€ikesest erinevusest kogu vĂ”rgu kontekstis ei pÀÀse me hoolimata kĂ”igist automatiseerimissĂŒsteemidest ja raudkĂ€est juhtimises. Probleemide lahendamiseks ei hakka keegi ikkagi sĂŒsteemidesse konfiguratsiooni tegema. Veel enam, et nende jaoks ei pruugi isegi konfiguratsioonimudelit ette nĂ€ha.

NĂ€iteks paketihulga arvu jĂ€lgimise tulemĂŒĂŒrireegel teatud IP jaoks, et probleemi lokaliseerida — tĂ€iesti tavaline ajutine konfiguratsioon.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Komponent 10. MonitoringsĂŒsteem

Alguses ei olnud mul plaanis teemat jĂ€lgimisest kĂ€sitleda - see on siiski ulatuslik, vaieldav ja keeruline teema. Kuid protsessi kĂ€igus selgus, et see on hĂ€davajalik osa automatiseerimisest. Selle ĂŒmbersidumine praktikata on vĂ”imatu.

Arendades mĂ”tet - see on orgaaniline osa CI/CD protsessist. PĂ€rast konfiguratsiooni rakendamist vĂ”rgus peame suutma kindlaks teha, kas kĂ”ik on nĂŒĂŒd korras.
Ja jutt ei ole ainult ja mitte niivÔrd graafikutest, vaid ka kasutajaliidete vÔi sÔlmpunktide kÀttesaadavusest, vaid ka keerukamatest asjadest - vajalikest marsruutidest, nende atribuutidest, BGP sessioonide arvust, OSPF naabritest, teenuste end-to-end töökindlusest.
Kas logid ei lakka kogumast vÀlisele serverile, kas SFlow-agent ei ole katki, kas kÔikuvus ei ole suurenenud jÀrjekordades, kas mingite prefiksi paaride vahel ei ole rikkumist?

Erinevas artiklis arutame ka selle ĂŒle.

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

Automatiseerimine kÔige vÀiksematele. Nullosaline. Planeerimine

KokkuvÔte

PÔhjaks valisin tÀnapÀevase andakeskuse vÔrgu kujunduse - L3 Clos Fabric koos BGP-ga marsruutimisprotokollina.
Seekord ehitame vĂ”rku Juniperil, sest nĂŒĂŒd on JunOs liidese kasutamine standart.

Teeme endale elu keerulisemaks, kasutades ainult avatud lĂ€htekoodiga tööriistu ja mitme mĂŒĂŒja vĂ”rku — seetĂ”ttu valin lisaks Juniperile veel ĂŒhe Ă”nneliku.

Tulevaste avaldamiste plaan on umbes selline:
Esiteks rÀÀgin virtuaalsetest vÔrkudest. Esiteks seetÔttu, et ma tahan, ja teiseks seetÔttu, et ilma selleta pole infrastruktuuri vÔrgu kujundamine eriti arusaadav.
Siis rÀÀgime vÔrgukujundusest: topoloogiast, marsruutimisest, poliitikatest.
Kogume laboriseina.
MÔtleme jÀrele ja vÔib-olla harjutame seadme vÔrku kÀivitamist.
Ja edasi iga kompoondi intiimsetes detailides.

Ja jah, ma ei lubanud selle tsĂŒkli kenasti lĂ”petada valmis lahendusega. 🙂

Kasulikud lingid

  • Enne sĂŒvenemist seeriasse, tasub lugeda Natasha Samojlenko raamatut Python seadmeinseneridele. Ja vĂ”ib-olla ka lĂ€bida kursus.
  • Samuti on kasulik lugeda RFC Facebooki andmekeskuse tehaste kujundamist Peeter Lapukhovi autorluses.
  • Kuidas töötavad overlay SDN, annab teile aimu arhitektuuri dokumentatsioon Tungsten Fabric (varasem Open Contrail).
AitÀh

Roman Gorgi. Kommentaaride ja paranduste eest.
Artyom Chornobay. KDPV eest.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster