{"id":35972,"date":"2019-10-31T22:08:54","date_gmt":"2019-10-31T19:08:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\/"},"modified":"2019-10-31T22:08:54","modified_gmt":"2019-10-31T19:08:54","slug":"avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","title":{"rendered":"Automatizarea pentru cei mai mici. Partea zero. Planificare","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>SDSM s-a \u00eencheiat, dar dorin\u021ba necontrolat\u0103 de a scrie a r\u0103mas. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/0\/kdpv.jpg\"><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/2da9a566e92a782cf1205a6da716d4c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Mul\u021bi ani, fratele nostru a suferit din cauza \u00eendeplinirii muncii de rutin\u0103, \u00eencruci\u0219\u00e2nd degetele \u00eenainte de commit \u0219i lipsindu-se de somn din cauza rollback-urilor nocturne.<br \/>\nDar timpurile \u00eentunecate vin la sf\u00e2r\u0219it.<\/p>\n<p>Prin acest articol voi \u00eencepe o serie despre cum <i>mi se pare<\/i> automatizarea. <br \/>\nPe parcurs, vom analiza etapele automatiz\u0103rii, stocarea variabilelor, formalizarea designului, RestAPI, NETCONF, YANG, YDK \u0219i vom programa foarte mult. <br \/>\n<i>Pentru mine<\/i> \u00eenseamn\u0103 c\u0103 a) nu este o adev\u0103rat\u0103 obiectivitate, b) nu este neap\u0103rat cea mai bun\u0103 abordare \u0219i c) punctul meu de vedere se poate schimba chiar \u0219i pe parcursul trecerii de la primul la ultimul articol \u2014 sincer, de la stadiul de ciorn\u0103 p\u00e2n\u0103 la publicare am rescris totul complet de dou\u0103 ori. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Cuprins<\/h1>\n<p><\/p>\n<ol>\n<li> <b>Obiective<\/b>\n<ol>\n<li>Re\u021beaua \u2014 ca un organism unitar<\/li>\n<li>Testarea configura\u021biei<\/li>\n<li>Versionare<\/li>\n<li>Monitorizarea \u0219i auto-repararea serviciilor<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Instrumente<\/b>\n<ol>\n<li>Sistem de inventariere<\/li>\n<li>Sistem de gestionare a spa\u021biului IP<\/li>\n<li>Sistem de descriere a serviciilor de re\u021bea<\/li>\n<li>Mecanismul de ini\u021bializare a dispozitivelor<\/li>\n<li>Modelul de configurare agnostic la furnizor<\/li>\n<li>Driver-ul specific de interfa\u021b\u0103 al furnizorului<\/li>\n<li>Mecanismul de livrare a configura\u021biei pe dispozitiv<\/li>\n<li>CI\/CD<\/li>\n<li>Mecanismul de backup \u0219i de c\u0103utare a abaterilor<\/li>\n<li>Sistem de monitorizare<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Concluzie<\/b>\n <\/li>\n<\/ol>\n<p>\n\u00cencerc s\u0103 conduc ADSCM \u00eentr-un format pu\u021bin diferit de SDSM. Vor ap\u0103rea \u00een continuare articole extinse \u0219i detaliate, iar \u00eentre ele voi publica note scurte din experien\u021ba zilnic\u0103. Voi \u00eencerca s\u0103 lupt \u00eempotriva perfec\u021bionismului \u0219i s\u0103 nu rafinez fiecare dintre ele. <\/p>\n<blockquote><p> C\u00e2t de amuzant este c\u0103 trebuie s\u0103 parcurg acela\u0219i drum pentru a doua oar\u0103.<\/p>\n<p> La \u00eenceput, a trebuit s\u0103 scriu singur articole despre re\u021bele deoarece nu existau \u00een re\u021beaua rus\u0103.<\/p>\n<p> Acum nu am g\u0103sit un document cuprinz\u0103tor care s\u0103 sistematizeze abord\u0103rile de automatizare \u0219i s\u0103 analizeze tehnologiile men\u021bionate anterior prin exemple practice simple.<\/p>\n<p> Poate gre\u0219esc, a\u0219a c\u0103 l\u0103sa\u021bi linkuri c\u0103tre resurse valoroase. Totu\u0219i, asta nu-mi va schimba hot\u0103r\u00e2rea de a scrie, deoarece, scopul principal este \u00eentr-adev\u0103r s\u0103 \u00eenv\u0103\u021b ceva pentru mine, iar a \u00eembun\u0103t\u0103\u021bi via\u021ba celor din jur este un bonus pl\u0103cut care \u00eembog\u0103\u021be\u0219te experien\u021ba.\n<\/p><\/blockquote>\n<p>Vom \u00eencerca s\u0103 lu\u0103m un centru de date de dimensiuni medii LAN DC \u0219i s\u0103 lucr\u0103m la \u00eentreaga schem\u0103 de automatizare. <br \/>\nVoi face unele lucruri aproape pentru prima dat\u0103 \u00eempreun\u0103 cu voi. <\/p>\n<blockquote><p> \u00cen ideile \u0219i instrumentele descrise aici nu voi fi original. Dmitri Figol are un canal excelent <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MLeiShwb7Qo&amp;list=PLSwGHYY8t8JiGI9powOXDHTAXDSs7FZqt\">cu transmisiuni pe aceast\u0103 tem\u0103.<\/a><\/noindex>. <br \/>\n Articolele se vor suprapune \u00een multe aspecte cu ele. \n<\/p><\/blockquote>\n<p>\u00cen LAN DC sunt 4 centre de date, aproximativ 250 de comutatoare, o jum\u0103tate de duzin\u0103 de routere \u0219i c\u00e2teva firewall-uri. <br \/>\nNu este Facebook, dar este suficient pentru a reflecta profund asupra automatiz\u0103rii. <br \/>\nExist\u0103, totu\u0219i, opinia c\u0103 dac\u0103 ave\u021bi mai mult de 1 dispozitiv, ave\u021bi nevoie de automatizare. <br \/>\nDe fapt, este greu de imaginat c\u0103 cineva ar putea tr\u0103i acum f\u0103r\u0103 cel pu\u021bin un pachet de scripturi pe genunchi. <br \/>\nDe\u0219i am auzit c\u0103 exist\u0103 companii unde contabilizarea adreselor IP se face \u00een Excel, iar fiecare dintre sutele de dispozitive de re\u021bea este configurat manual \u0219i are o configura\u021bie unic\u0103. Acest lucru poate fi considerat art\u0103 modern\u0103, dar sentimentele unui inginer vor fi cu siguran\u021b\u0103 r\u0103nite. <\/p>\n<h1>Obiective<\/h1>\n<p>\n\u00cen acest moment, ne vom stabili obiectivele cele mai abstracte:<\/p>\n<ul>\n<li>Re\u021beaua \u2014 ca un organism unitar<\/li>\n<li>Testarea configura\u021biei<\/li>\n<li>Versionarea st\u0103rii re\u021belei.<\/li>\n<li>Monitorizarea \u0219i auto-repararea serviciilor<\/li>\n<\/ul>\n<p>\nMai t\u00e2rziu, \u00een acest articol, vom analiza ce instrumente vom folosi, iar \u00een urm\u0103toarele, at\u00e2t obiectivele, c\u00e2t \u0219i instrumentele \u00een detalii.<\/p>\n<h2>Re\u021beaua \u2014 ca un organism unitar<\/h2>\n<p>\nFraza definitorie a ciclului, de\u0219i la prima vedere poate p\u0103rea nesemnificativ\u0103: <b>vom configura re\u021beaua, nu dispozitivele individuale.<\/b>. <br \/>\n\u00cen ultimii ani, observ\u0103m o schimbare a accentelor c\u0103tre tratarea re\u021belei ca pe o entitate unic\u0103, de aici \u0219i noile concepte care ne apar \u00een via\u021b\u0103. <i>Software Defined Networking<\/i>, <i>Intent Driven Networks<\/i> \u0219i <i>Autonomous Networks<\/i>. <br \/>\nPentru c\u0103 ce au aplica\u021biile de la re\u021bea din punct de vedere global: conectivitatea \u00eentre punctele A \u0219i B (uneori +B-Y) \u0219i izolarea de alte aplica\u021bii \u0219i utilizatori. <\/p>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/f8b43928ccc6d487722ce7724f5c4829.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0218i astfel, sarcina noastr\u0103 \u00een aceast\u0103 serie este: <b>s\u0103 construim un sistem<\/b>, care s\u0103 sus\u021bin\u0103 configura\u021bia actual\u0103 <b>a \u00eentregii re\u021bele<\/b>, care se decompozeaz\u0103 deja \u00een configura\u021bia actual\u0103 pe fiecare dispozitiv conform rolului \u0219i loca\u021biei sale. <br \/>\n<b>Sistem<\/b> gestionarea re\u021belei implic\u0103 faptul c\u0103 pentru a efectua modific\u0103ri ne adres\u0103m re\u021belei, iar aceasta va calcula starea necesar\u0103 pentru fiecare dispozitiv \u0219i \u00eel va configura. <br \/>\nAstfel, minimiz\u0103m aproape la zero utilizarea CLI manual \u2014 orice modific\u0103ri \u00een configurarea dispozitivelor sau \u00een designul re\u021belei trebuie formalizate \u0219i documentate \u2014 \u0219i abia apoi implementate pe elementele necesare ale re\u021belei. <\/p>\n<blockquote><p> Adic\u0103, de exemplu, dac\u0103 am decis c\u0103, de acum \u00eenainte, switch-urile de rack din Kazan trebuie s\u0103 anun\u021be dou\u0103 re\u021bele \u00een loc de una, noi<\/p>\n<ol>\n<li>Mai \u00eent\u00e2i document\u0103m modific\u0103rile \u00een sisteme<\/li>\n<li>Gener\u0103m configura\u021bia \u021bint\u0103 pentru toate dispozitivele din re\u021bea<\/li>\n<li>Lans\u0103m programul de actualizare a configura\u021biei re\u021belei, care calculeaz\u0103 ce trebuie eliminat pe fiecare nod, ce trebuie ad\u0103ugat \u0219i aduce nodurile \u00een starea dorit\u0103.<\/li>\n<\/ol>\n<p>\n \u00cen aceast\u0103 etap\u0103, intervenim manual doar la primul pas.\n<\/p><\/blockquote>\n<h2>Testarea configura\u021biei<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.wikisummaries.org\/wiki\/Visible_Ops\">Este cunoscut<\/a><\/noindex>, c\u0103 80% din probleme apar \u00een timpul modific\u0103rii configura\u021biei \u2014 un indiciu indirect este c\u0103, \u00een perioada s\u0103rb\u0103torilor de iarn\u0103, de obicei totul decurge f\u0103r\u0103 probleme. <br \/>\nAm fost martorul a zeci de downtime-uri globale cauzate de erori umane: comenzi gre\u0219ite, executate \u00een ramuri de configura\u021bie gre\u0219ite, uitate comunit\u0103\u021bi, \u0219tergerea global\u0103 a MPLS-ului pe un router, configurarea a cinci dispozitive, iar la al \u0219aselea nu am observat eroarea, am comis modific\u0103ri vechi f\u0103cute de o alt\u0103 persoan\u0103. Exist\u0103 o mul\u021bime de scenarii. <\/p>\n<p>Automatizarea ne va permite s\u0103 facem mai pu\u021bine gre\u0219eli, dar la o scar\u0103 mai mare. Astfel putem bloca nu un singur dispozitiv, ci \u00eentreaga re\u021bea dintr-o dat\u0103. <\/p>\n<p>Din vremuri imemoriale, str\u0103mo\u0219ii no\u0219tri verificau corectitudinea modific\u0103rilor efectuate cu un ochi ager, determinare \u0219i func\u021bionalitatea re\u021belei dup\u0103 implementarea acestora. <br \/>\nAce\u0219ti str\u0103mo\u0219i, ale c\u0103ror lucr\u0103ri duceau la inactivitate \u0219i pierderi catastrofale, l\u0103sau mai pu\u021bini urma\u0219i \u0219i ar trebui, \u00een timp, s\u0103 dispar\u0103, dar evolu\u021bia este un proces lent, \u0219i de aceea \u00eenc\u0103 nu to\u021bi verific\u0103 mai \u00eent\u00e2i modific\u0103rile \u00een laborator. <br \/>\nTotu\u0219i, la v\u00e2rful progresului se afl\u0103 cei care au automatizat procesul de testare a configura\u021biei \u0219i aplicarea acesteia \u00een re\u021bea. Cu alte cuvinte \u2014 au \u00eemprumutat procedura CI\/CD (<noindex><a rel=\"nofollow\" href=\"https:\/\/img.devrant.com\/devrant\/rant\/r_1535091_ErSUL.jpg\">Continuous Integration, Continuous Deployment<\/a><\/noindex>) de la dezvoltatori.<br \/>\n\u00cen una dintre p\u0103r\u021bi, vom analiza cum s\u0103 implement\u0103m acest lucru folosind un sistem de control al versiunilor, probabil GitHub. <\/p>\n<blockquote><p> Odat\u0103 ce te obi\u0219nuie\u0219ti cu no\u021biunea de CI\/CD \u00een re\u021bea, metoda de verificare a configura\u021biei prin aplicarea ei pe re\u021beaua de lucru \u021bi se va p\u0103rea o ignoran\u021b\u0103 medieval\u0103 timpurie. Aproape ca \u0219i cum ai b\u0103tut cu un ciocan pe o warhead.\n<\/p><\/blockquote>\n<p>O continuare organic\u0103 a ideilor despre <b>sistemul<\/b> de gestionare a re\u021belei \u0219i CI\/CD devine un veritabil versionare a configura\u021biei. <\/p>\n<h2>Versionare<\/h2>\n<p>\nVom presupune c\u0103, la orice modificare, chiar \u0219i cele mai nesemnificative, chiar pe un dispozitiv neobservat, \u00eentreaga re\u021bea trece de la o stare la alta.<br \/>\n\u0218i noi, de fiecare dat\u0103, nu execut\u0103m comanda pe dispozitiv, ci schimb\u0103m starea re\u021belei. <br \/>\nHai s\u0103 numim aceste st\u0103ri versiuni?<\/p>\n<p>S\u0103 zicem c\u0103 versiunea curent\u0103 este 1.0.0.<br \/>\nS-a schimbat adresa IP a interfe\u021bei Loopback pe unul dintre ToR-uri? Aceasta este o versiune minor\u0103 \u2014 va primi num\u0103rul 1.0.1.<br \/>\nAm revizuit politicile de import a rutelor \u00een BGP \u2014 un pic mai serios \u2014 deja 1.1.0<br \/>\nAm decis s\u0103 sc\u0103p\u0103m de IGP \u0219i s\u0103 trecem doar la BGP \u2014 aceasta este deja o schimbare radical\u0103 de design \u2014 2.0.0.<\/p>\n<p>\u00cen acela\u0219i timp, centrele de date diferite pot avea versiuni diferite \u2014 re\u021beaua se dezvolt\u0103, se instaleaz\u0103 echipamente noi, unde se adaug\u0103 niveluri noi de spine, unde nu, etc.<\/p>\n<p>Despre <noindex><a rel=\"nofollow\" href=\"https:\/\/semver.org\">versionare semantic\u0103<\/a><\/noindex> vom discuta \u00eentr-un articol separat.<\/p>\n<p>Reiterez \u2014 orice modificare (cu excep\u021bia comenzilor de depanare) este o actualizare a versiunii. Orice abateri de la versiunea actual\u0103 trebuie s\u0103 fie notificate administratorilor.<\/p>\n<p>Acela\u0219i lucru se aplic\u0103 \u0219i \u00eentoarcerii modific\u0103rilor \u2014 aceasta nu este anularea ultimelor comenzi, nu este un rollback realizat de sistemul de operare al dispozitivului \u2014 este readucerea \u00eentregii re\u021bele la o versiune nou\u0103 (veche). <\/p>\n<h2>Monitorizarea \u0219i auto-repararea serviciilor<\/h2>\n<p>\nAceasta este o sarcin\u0103 evident\u0103 \u00een re\u021belele moderne care ajunge la un nou nivel.<br \/>\nAdesea, la marii furnizori de servicii se practic\u0103 abordarea c\u0103 un serviciu picat trebuie reparat foarte repede \u0219i s\u0103 fie ridicat unul nou, \u00een loc s\u0103 \u00eencerce s\u0103 afle ce s-a \u00eent\u00e2mplat.<br \/>\n\u00abFoarte\u00bb \u00eenseamn\u0103 c\u0103 din toate col\u021burile trebuie s\u0103 te \u00eembraci \u00een moduri de monitorizare, care \u00een c\u00e2teva secunde vor detecta cele mai mici abateri de la norm\u0103.<br \/>\n\u0218i aici nu sunt suficiente metricile obi\u0219nuite, precum \u00eenc\u0103rcarea interfe\u021bei sau disponibilitatea nodului. Nici monitorizarea manual\u0103 a observatorului nu este suficient\u0103.<br \/>\nPentru multe lucruri, ar trebui s\u0103 existe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.irisns.com\/self-healing-network-tomorrow-look-like\/\">Self-Healing<\/a><\/noindex> \u2014 monitoriz\u0103rile au \u00eenceput s\u0103 clipeasc\u0103 ro\u0219u \u0219i au mers singure s\u0103 aplice planta, unde doare.<\/p>\n<p>\u00cen acest context, monitoriz\u0103m nu doar dispozitivele individuale, ci \u0219i s\u0103n\u0103tatea re\u021belei \u00een ansamblu, at\u00e2t \u00een modul white box, care este relativ u\u0219or de \u00een\u021beles, c\u00e2t \u0219i \u00een modul black box, care este deja mai complex.<\/p>\n<p>\nCe ne va fi necesar pentru a realiza astfel de planuri ambi\u021bioase?<\/p>\n<ul>\n<li>S\u0103 avem o list\u0103 a tuturor dispozitivelor din re\u021bea, loca\u021bia acestora, rolurile, modelele, versiunile software. <br \/>\n <i>kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3.<\/i>\n <\/li>\n<li>S\u0103 avem un sistem de descriere a serviciilor de re\u021bea. <br \/>\n <i>IGP, BGP, L2\/3VPN, Policy, ACL, NTP, SSH.<\/i><\/li>\n<li>S\u0103 putem ini\u021bia dispozitivul. <br \/>\n <i>Hostname, Mgmt IP, Mgmt Route, Users, RSA-Keys, LLDP, NETCONF<\/i><\/li>\n<li>S\u0103 configur\u0103m dispozitivul \u0219i s\u0103 readucem configura\u021bia la versiunea dorit\u0103 (inclusiv o versiune anterioar\u0103).<\/li>\n<li>S\u0103 test\u0103m configura\u021bia<\/li>\n<li>S\u0103 verific\u0103m periodic starea tuturor dispozitivelor pentru a identifica eventualele abateri de la starea actual\u0103 \u0219i s\u0103 inform\u0103m persoanele implicate.<br \/>\n <i>Noaptea, cineva a ad\u0103ugat \u00een lini\u0219te o regul\u0103 \u00een ACL<\/i>.<\/li>\n<li>S\u0103 monitoriz\u0103m func\u021bionarea.<\/li>\n<\/ul>\n<p><\/p>\n<h1>Instrumente<\/h1>\n<p>\nPare destul de complicat pentru a \u00eencepe s\u0103 decompoz\u0103m proiectul \u00een componente.<\/p>\n<p>Vor fi zece dintre ele:<\/p>\n<ol>\n<li>Sistem de inventariere<\/li>\n<li>Sistem de gestionare a spa\u021biului IP<\/li>\n<li>Sistem de descriere a serviciilor de re\u021bea<\/li>\n<li>Mecanismul de ini\u021bializare a dispozitivelor<\/li>\n<li>Modelul de configurare agnostic la furnizor<\/li>\n<li>Driver-ul specific de interfa\u021b\u0103 al furnizorului<\/li>\n<li>Mecanismul de livrare a configura\u021biei pe dispozitiv<\/li>\n<li>CI\/CD<\/li>\n<li>Mecanismul de backup \u0219i de c\u0103utare a abaterilor<\/li>\n<li>Sistem de monitorizare<\/li>\n<\/ol>\n<blockquote><p> Acesta este, de altfel, un exemplu despre cum s-a schimbat perspectiva asupra obiectivelor ciclului \u2014 \u00een schi\u021ba componentelor erau patru.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/91132e29d359a4042b213529511f6d7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen ilustra\u021bie, am reprezentat toate componentele \u0219i dispozitivul propriu-zis. <br \/>\nComponentele intersectate interac\u021bioneaz\u0103 \u00eentre ele. <br \/>\nCu c\u00e2t este mai mare blocul, cu at\u00e2t mai mult\u0103 aten\u021bie trebuie acordat\u0103 acestui component. <\/p>\n<p><\/p>\n<h2>Componenta 1. Sistem de inventariere<\/h2>\n<p>\nEste evident c\u0103 dorim s\u0103 \u0219tim ce echipament este, unde se afl\u0103 \u0219i la ce este conectat. <br \/>\nSistemul de inventariere este o parte integrant\u0103 a oric\u0103rei \u00eentreprinderi. <br \/>\nCel mai frecvent, pentru dispozitivele de re\u021bea, \u00eentreprinderea are un sistem de inventariere dedicat, care rezolv\u0103 sarcini mai specifice. <br \/>\n\u00cen cadrul acestui ciclu de articole, ne vom referi la aceasta ca DCIM \u2014 Managementul Infrastructurii Centrului de Date. De\u0219i termenul DCIM, strict vorbind, include mult mai mult.<\/p>\n<p>Pentru sarcinile noastre, vom stoca urm\u0103toarele informa\u021bii despre dispozitiv:<\/p>\n<ul>\n<li>Num\u0103rul de inventar<\/li>\n<li>Nume\/descriere <\/li>\n<li>Model (<i>Huawei CE12800, Juniper QFX5120 etc.<\/i>)<\/li>\n<li>Parametrii caracteristici (<i>pl\u0103ci, interfe\u021be etc.<\/i>)<\/li>\n<li>Rol (<i>Leaf, Spine, Border Router etc.<\/i>)<\/li>\n<li>Loca\u021bia (<i>regiune, ora\u0219, centru de date, rack, unitate<\/i>)<\/li>\n<li>Interconexiunile \u00eentre dispozitive<\/li>\n<li>Topologia re\u021belei<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/fac708b1bf3640a943f90247bff8216e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEste clar c\u0103 ne dorim s\u0103 cunoa\u0219tem toate acestea. <br \/>\nDar va ajuta aceasta \u00een scopurile automatiz\u0103rii? <br \/>\nCu siguran\u021b\u0103. <br \/>\nDe exemplu, \u0219tim c\u0103 \u00een acest centru de date, pe comutatoarele Leaf, dac\u0103 este vorba de Huawei, ACL pentru filtrarea anumitor tipuri de trafic ar trebui aplicate pe VLAN, iar dac\u0103 este Juniper \u2014 atunci pe unitatea 0 a interfe\u021bei fizice. <br \/>\nSau trebuie s\u0103 implement\u0103m un nou server Syslog pe toate grani\u021bele regiunii.<\/p>\n<p>\u00cen aceasta vom stoca dispozitivele de re\u021bea virtuale, cum ar fi ruterele virtuale sau reflectoarele de rut\u0103. Putem ad\u0103uga servere DNS, NTP, Syslog \u0219i, \u00een general, tot ceea ce se refer\u0103 la re\u021bea. <\/p>\n<h2>Componenta 2. Sistemul de gestionare a spa\u021biului IP<\/h2>\n<p>\nDa, \u0219i \u00een zilele noastre exist\u0103 echipe de oameni care \u021bin registro pentru prefixe \u0219i adrese IP \u00een fi\u0219iere Excel. Dar abordarea modern\u0103 este, totu\u0219i, o baz\u0103 de date, cu un frontend pe nginx\/apache, API \u0219i func\u021bii extinse pentru gestionarea adreselor \u0219i re\u021belelor IP, \u00eemp\u0103r\u021bite pe VRF.<br \/>\nIPAM \u2014 Gestionarea Adreselor IP. <\/p>\n<p>Pentru sarcinile noastre, \u00een ea vom stoca urm\u0103toarele informa\u021bii:<\/p>\n<ul>\n<li>VLAN<\/li>\n<li>VRF<\/li>\n<li>Re\u021bele\/Subre\u021bele<\/li>\n<li>adrese IP<\/li>\n<li>Leg\u0103tura adreselor la dispozitive, re\u021belile la loca\u021bii \u0219i numerele VLAN<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/6d476d48f95ed663d84cae052a86d129.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDin nou, este clar c\u0103 dorim s\u0103 ne asigur\u0103m c\u0103, aloc\u00e2nd o nou\u0103 adres\u0103 IP pentru loopback-ul ToR-ului, nu d\u0103m peste faptul c\u0103 a fost deja atribuit\u0103 cuiva. Sau c\u0103 acela\u0219i prefix a fost folosit de dou\u0103 ori \u00een col\u021buri diferite ale re\u021belei. <br \/>\nDar cum va ajuta asta la automatizare? <br \/>\nU\u0219or. <br \/>\nCerem \u00een sistem prefixul cu rolul Loopbacks, \u00een care exist\u0103 adrese IP disponibile pentru alocare \u2014 dac\u0103 se g\u0103se\u0219te, aloc\u0103m adresa, dac\u0103 nu, cerem crearea unui nou prefix. <br \/>\nSau, la crearea configura\u021biei unui dispozitiv, putem afla din acest sistem \u00een care VRF ar trebui s\u0103 se g\u0103seasc\u0103 interfa\u021ba. <br \/>\n\u0218i, la pornirea unui nou server, scriptul va consulta sistemul, va afla \u00een care switch de server, \u00een care port \u0219i ce subre\u021bea este alocat\u0103 pe interfa\u021b\u0103 \u2014 de acolo va aloca adresa serverului. <\/p>\n<p>\nEste o idee bun\u0103 s\u0103 combin\u0103m DCIM \u0219i IPAM \u00eentr-un singur sistem, pentru a nu dubla func\u021biile \u0219i a nu gestiona dou\u0103 entit\u0103\u021bi asem\u0103n\u0103toare. <br \/>\n\u0218i a\u0219a vom face. <\/p>\n<h2>Componenta 3. Sistemul de descriere a serviciilor de re\u021bea<\/h2>\n<p>\nDac\u0103 primele dou\u0103 sisteme stocheaz\u0103 variabile care trebuie utilizate \u00een continuare, atunci al treilea descrie pentru fiecare rol al dispozitivului, cum ar trebui s\u0103 fie configurat. <br \/>\nMerit\u0103 s\u0103 eviden\u021biem dou\u0103 tipuri diferite de servicii de re\u021bea: <\/p>\n<ul>\n<li>Infrastructurale<\/li>\n<li>Clien\u021bi.<\/li>\n<\/ul>\n<p>Primul tip este destinat asigur\u0103rii conectivit\u0103\u021bii de baz\u0103 \u0219i gestion\u0103rii echipamentului. Acesta include VTY, SNMP, NTP, Syslog, AAA, protocoalele de rutare, CoPP etc. <br \/>\nAl doilea tip organizeaz\u0103 serviciul pentru client: MPLS L2\/L3VPN, GRE, VXLAN, VLAN, L2TP etc. <br \/>\nDesigur, exist\u0103 \u0219i cazuri limit\u0103 \u2014 unde includem MPLS LDP, BGP? De asemenea, protocoalele de rutare pot fi folosite pentru clien\u021bi. Dar asta nu este esen\u021bial. <\/p>\n<p>Ambele tipuri de servicii sunt desf\u0103\u0219urate pe primitive de configurare:<\/p>\n<ul>\n<li>interfe\u021be fizice \u0219i logice (tag\/untag, mtu)<\/li>\n<li>Adrese IP \u0219i VRF (IP, IPv6, VRF)<\/li>\n<li>ACL \u0219i politici de gestionare a traficului<\/li>\n<li>Protocoale (IGP, BGP, MPLS)<\/li>\n<li>Politici de rutare (liste de prefixe, comunit\u0103\u021bi, filtre ASN).<\/li>\n<li>Servicii de sistem (SSH, NTP, LLDP, Syslog\u2026)<\/li>\n<li>\u0218i altele.<\/li>\n<\/ul>\n<p>\nNu \u0219tiu \u00eenc\u0103 exact cum vom face asta. Ne vom ocupa \u00een cadrul unui articol separat.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/092bc3a4b875f4a6422ee13fb580ba4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDac\u0103 ne \u00eendep\u0103rt\u0103m pu\u021bin de teorie, am putea descrie c\u0103<br \/>\nComutatorul Leaf trebuie s\u0103 aib\u0103 sesiuni BGP cu toate comutatoarele Spine conectate, s\u0103 importe re\u021belele conectate \u00een proces, s\u0103 accepte numai re\u021bele dintr-un anumit prefix de la comutatoarele Spine. S\u0103 limiteze CoPP IPv6 ND la 10 pps etc. <br \/>\nLa r\u00e2ndul lor, spinii men\u021bin sesiuni cu to\u021bi livratorii conecta\u021bi, ac\u021bion\u00e2nd ca reflector de r\u0103d\u0103cin\u0103, \u0219i accept\u0103 de la ace\u0219tia doar rutele de o anumit\u0103 lungime \u0219i cu o anumit\u0103 comunitate.<\/p>\n<h2>Componenta 4. Mecanismul de ini\u021bializare a echipamentului<\/h2>\n<p>\nSub acest titlu, unific multe ac\u021biuni care trebuie s\u0103 aib\u0103 loc pentru ca echipamentul s\u0103 fie vizibil \u0219i accesibil de la distan\u021b\u0103.<\/p>\n<ol>\n<li>Introducerea echipamentului \u00een sistemul de inventariere.<\/li>\n<li>Alocarea unei adrese IP de management.<\/li>\n<li>Configurarea accesului de baz\u0103 la acesta: <br \/>\nNume gazd\u0103, adres\u0103 IP de management, rut\u0103 c\u0103tre re\u021beaua de management, utilizatori, chei SSH, protocoale \u2014 telnet\/SSH\/NETCONF<\/li>\n<\/ol>\n<p>Exist\u0103 trei abord\u0103ri:<\/p>\n<ul>\n<li>Totul manual. Echipamentul este adus pe stand, unde o persoan\u0103 obi\u0219nuit\u0103 \u00eel va introduce \u00een sistem, se va conecta la consol\u0103 \u0219i \u00eel va configura. Poate func\u021biona pe re\u021bele statice mici.<\/li>\n<li>ZTP \u2014 Zero Touch Provisioning. Echipamentul a sosit, s-a aliniat, a primit o adres\u0103 prin DHCP, a mers pe un server special \u0219i s-a auto-configurat. <\/li>\n<li>Infrastructura serverelor de consol\u0103, unde configurarea ini\u021bial\u0103 se realizeaz\u0103 prin portul de consol\u0103 \u00een mod automat.<\/li>\n<\/ul>\n<p>Despre toate trei vom discuta \u00eentr-un articol separat.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/6d8d061e53b508edbbcbd98fe496ca91.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Componenta 5. Modelul de configurare independent de furnizor<\/h2>\n<p>\nP\u00e2n\u0103 acum, toate sistemele erau ni\u0219te patch-uri disparate, oferind o descriere variabil\u0103 \u0219i declarativ\u0103 a ceea ce ne-ar pl\u0103cea s\u0103 vedem pe re\u021bea. \u00cens\u0103, mai devreme sau mai t\u00e2rziu, va fi necesar s\u0103 ne ocup\u0103m de concret. <br \/>\n\u00cen aceast\u0103 etap\u0103, pentru fiecare dispozitiv specific, primitivele, serviciile \u0219i variabilele sunt combinate \u00eentr-un model de configurare, care descrie efectiv configura\u021bia complet\u0103 a dispozitivului respectiv, doar c\u0103 \u00eentr-o manier\u0103 independent\u0103 de furnizor. <br \/>\nCe aduce acest pas? De ce s\u0103 nu form\u0103m imediat configura\u021bia dispozitivului, pe care putem s\u0103 o \u00eenc\u0103rc\u0103m direct? <br \/>\nDe fapt, acest lucru permite rezolvarea a trei sarcini:<\/p>\n<ol>\n<li> S\u0103 nu ne adapt\u0103m la o interfa\u021b\u0103 specific\u0103 de interac\u021biune cu dispozitivul. Fie c\u0103 este vorba de CLI, NETCONF, RESTCONF, SNMP - modelul va fi acela\u0219i.<\/li>\n<li> S\u0103 nu avem un num\u0103r de \u0219abloane\/scripturi \u00een func\u021bie de num\u0103rul de furnizori din re\u021bea, \u0219i, \u00een cazul schimb\u0103rii designului, s\u0103 modific\u0103m acela\u0219i lucru \u00een mai multe locuri.<\/li>\n<li> S\u0103 \u00eenc\u0103rc\u0103m configura\u021bia de pe dispozitiv (backup), s\u0103 o descompunem \u00eentr-un model exact \u0219i s\u0103 compar\u0103m direct configura\u021bia \u021bint\u0103 cu cea existent\u0103 pentru a calcula delta \u0219i a preg\u0103ti un patch de configura\u021bie, care va schimba doar acele p\u0103r\u021bi care sunt necesare sau pentru a identifica abaterile.<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/a154c42ebe7978fcc5b2ce4f235516c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCa urmare a acestei etape, ob\u021binem o configura\u021bie independent\u0103 de furnizor.<\/p>\n<h2>Componentele 6. Driver specific interfe\u021bei de furnizor<\/h2>\n<p>\nNu te iluziona c\u0103 \u00een viitor vei putea configura Cisco exact a\u0219a cum faci cu Juniper, pur \u0219i simplu trimi\u021b\u00e2nd apeluri complet identice. \u00cen ciuda popularit\u0103\u021bii \u00een cre\u0219tere a whitebox-urilor \u0219i a apari\u021biei suportului pentru NETCONF, RESTCONF, OpenConfig, con\u021binutul specific livrat prin aceste protocoale variaz\u0103 de la un vendor la altul, iar acesta este unul dintre avantajele lor competitive pe care nu le vor ceda cu u\u0219urin\u021b\u0103. <br \/>\nEste aproximativ la fel ca OpenContrail \u0219i OpenStack, care au RestAPI ca interfa\u021ba lor NorthBound, a\u0219tept\u00e2nd apeluri complet diferite. <\/p>\n<p>A\u0219adar, \u00een pasul cinci, modelul independent de furnizor trebuie s\u0103 ia forma \u00een care va fi implementat pe hardware. <br \/>\n\u0218i aici sunt acceptate toate metodele (nu): CLI, NETCONF, RESTCONF, SNMP sunt toate capabile.<\/p>\n<p>Prin urmare, avem nevoie de un driver care s\u0103 transforme rezultatul pasului anterior \u00een formatul necesar pentru furnizorul specific: un set de comenzi CLI, o structur\u0103 XML.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/6ed8e935183075fda60a209477f84937.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Componenta 7. Mecanismul de livrare a configura\u021biei c\u0103tre dispozitiv<\/h2>\n<p>\nConfiguratia a fost generat\u0103, dar trebuie \u00eenc\u0103 livrat\u0103 pe dispozitive \u2014 \u0219i evident, nu manual. <br \/>\n<b>\u00cen primul r\u00e2nd<\/b>, \u00een fa\u021ba noastr\u0103 se pune \u00eentrebarea, ce transport vom folosi? Iar alegerea de ast\u0103zi nu este o mic\u0103:<\/p>\n<ul>\n<li>CLI (telnet, ssh)<\/li>\n<li>SNMP<\/li>\n<li>NETCONF<\/li>\n<li>RESTCONF<\/li>\n<li>REST API<\/li>\n<li>OpenFlow (de\u0219i acesta iese din lista noastr\u0103, deoarece este un mod de a livra FIB, nu configura\u021bii)<\/li>\n<\/ul>\n<p>Hai s\u0103 l\u0103murim lucrurile. CLI este legat de trecut. SNMP\u2026 eh-eh.<br \/>\nRESTCONF este \u00eenc\u0103 o necunoscut\u0103, iar REST API nu este suportat de aproape nimeni. A\u0219adar, ne vom concentra pe NETCONF \u00een acest ciclu.<\/p>\n<p>De fapt, a\u0219a cum a \u00een\u021beles cititorul, \u00een ceea ce prive\u0219te interfa\u021ba ne-am decis deja \u2014 rezultatul pasului anterior este prezentat \u00een formatul interfe\u021bei alese.<\/p>\n<p><b>\u00cen al doilea r\u00e2nd<\/b>, iar cu ce instrumente vom face asta?<br \/>\nAici alegerea este de asemenea mare:<\/p>\n<ul>\n<li>Script personalizat sau platform\u0103. Vom folosi ncclient \u0219i asyncIO \u0219i vom face totul noi. Ce ne opre\u0219te s\u0103 construim un sistem de deploy de la zero?<\/li>\n<li>Ansible cu biblioteca sa bogat\u0103 de module de re\u021bea.<\/li>\n<li>Salt cu suport limitat pentru re\u021bea \u0219i integrarea cu Napalm.<\/li>\n<li>Napalm, care cunoa\u0219te doar c\u00e2\u021biva furnizori \u0219i at\u00e2t, la revedere.<\/li>\n<li>Nornir \u2014 un alt animal pe care \u00eel vom dissecta \u00een viitor.<\/li>\n<\/ul>\n<p>Aici favoritul nu a fost ales \u2014 vom continua s\u0103 explor\u0103m.<\/p>\n<p>Ce este important aici? Consecin\u021bele aplic\u0103rii configura\u021biei. <br \/>\nFie c\u0103 a fost un succes sau nu. A r\u0103mas acces la echipament sau nu. <br \/>\nSe pare c\u0103 aici ajut\u0103 commit-ul cu confirmare \u0219i validare a ceea ce a fost \u00eenc\u0103rcat \u00een dispozitiv. <br \/>\nAceasta, \u00eempreun\u0103 cu o implementare corect\u0103 a NETCONF, restr\u00e2nge semnificativ cercul de dispozitive care se potrivesc \u2014 commit-urile normale nu sunt sus\u021binute de multe produc\u0103tori. Dar aceasta este doar una dintre condi\u021biile obligatorii \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81_%D0%BF%D1%80%D0%B5%D0%B4%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F\">RFP<\/a><\/noindex>. \u00cen cele din urm\u0103, nimeni nu se \u00eengrijoreaz\u0103 c\u0103 niciun furnizor rus nu va \u00eendeplini condi\u021bia unui interfa\u021b\u0103 de 32*100GE. Sau se \u00eengrijoreaz\u0103?<\/p>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/59d8ad3b55b9c107642550bb06fc759a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Componenta 8. CI\/CD<\/h2>\n<p>\nP\u00e2n\u0103 la acest moment avem deja configura\u021bia preg\u0103tit\u0103 pentru toate dispozitivele din re\u021bea.<br \/>\nSpun \u00abpentru toate\u00bb, deoarece vorbim despre versionarea st\u0103rii re\u021belei. Chiar dac\u0103 trebuie s\u0103 schimb\u0103m set\u0103rile pentru un singur switch, modific\u0103rile sunt calculate pentru \u00eentreaga re\u021bea. Evident, acestea pot fi zero pentru majoritatea nodurilor.<\/p>\n<p>Dar, a\u0219a cum am spus mai sus, nu suntem ni\u0219te barbar\u0103 pentru a lansa totul simultan \u00een produc\u021bie. <br \/>\nConfigura\u021bia generat\u0103 trebuie s\u0103 treac\u0103 \u00eent\u00e2i prin Pipeline CI\/CD.<\/p>\n<blockquote><p>CI\/CD \u00eenseamn\u0103 Integrare Continu\u0103, Livrare Continu\u0103. Este o metod\u0103 prin care echipa nu lanseaz\u0103 un nou release major o dat\u0103 la \u0219ase luni, \u00eenlocuind complet vechiul, ci implementeaz\u0103 regulat \u0219i incremental (Deployment) noi func\u021bionalit\u0103\u021bi \u00een por\u021bii mici, fiecare dintre acestea fiind testat\u0103 cuprinz\u0103tor pentru compatibilitate, securitate \u0219i func\u021bionalitate (Integration).\n<\/p><\/blockquote>\n<p>Pentru aceasta, avem un sistem de control al versiunilor, care urm\u0103re\u0219te modific\u0103rile de configura\u021bie, un laborator \u00een care se verific\u0103 dac\u0103 serviciul client nu este afectat, un sistem de monitorizare care verific\u0103 acest lucru, iar ultimul pas este implementarea modific\u0103rilor \u00een re\u021beaua opera\u021bional\u0103.<\/p>\n<p>Cu excep\u021bia comenzilor de depanare, absolut toate modific\u0103rile din re\u021bea trebuie s\u0103 treac\u0103 prin CI\/CD Pipeline \u2014 aceasta este garan\u021bia unei vie\u021bi lini\u0219tite \u0219i a unei cariere lungi \u0219i fericite.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/101a5ff87c7a9c7b6776aca9daf762a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Componenta 9. Sistemul de backup \u0219i de detectare a abaterilor<\/h2>\n<p>\nEi bine, nu trebuie s\u0103 mai discut\u0103m despre backup-uri \u00eenc\u0103 o dat\u0103. <br \/>\nLe vom aduna pur \u0219i simplu pe cron sau \u00een func\u021bie de modific\u0103rile de configura\u021bie din git.<\/p>\n<p>Dar a doua parte este mai interesant\u0103 \u2014 cineva trebuie s\u0103 supravegheze aceste backup-uri. \u0218i \u00een unele cazuri, acest cineva trebuie s\u0103 revin\u0103 la cele anterioare, iar \u00een altele, s\u0103 le repro\u0219eze cuiva c\u0103 exist\u0103 o problem\u0103. <br \/>\nDe exemplu, dac\u0103 apare un nou utilizator, care nu este \u00eenscris \u00een variabile, trebuie s\u0103 fie eliminat departe de hack. Iar dac\u0103 apare o nou\u0103 regul\u0103 de firewall \u2014 mai bine nu o atinge, este posibil ca cineva s\u0103 fi activat doar depanarea, sau poate un nou serviciu, ne\u00eendem\u00e2natic, a fost \u00eenscris gre\u0219it, fiindc\u0103 oameni deja au \u00eenceput s\u0103-l foloseasc\u0103.<\/p>\n<p>De la o anumit\u0103 delta mic\u0103 \u00een cadrul re\u021belei, tot nu ne vom desp\u0103r\u021bi, \u00een ciuda oric\u0103ror sisteme de automatizare \u0219i a unei m\u00e2ini de fier a conducerii. Pentru depanarea problemelor, oricum nimeni nu va face modific\u0103ri de configura\u021bie \u00een sisteme. Cu at\u00e2t mai mult, modelul de configurare poate s\u0103 nu prevad\u0103 nici m\u0103car aceste modific\u0103ri. <\/p>\n<blockquote><p>De exemplu, o regul\u0103 de firewall pentru a num\u0103ra pachetele c\u0103tre un anumit IP, pentru localizarea problemei \u2014 este o configura\u021bie temporar\u0103 destul de obi\u0219nuit\u0103.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/390f78139d336f1fc2c60573bccfe76c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Componenta 10. Sistemul de monitorizare<\/h2>\n<p>\nLa \u00eenceput, nu inten\u021bionam s\u0103 discut despre monitorizare \u2014 este totu\u0219i un subiect voluminos, controversat \u0219i complex. Dar pe parcurs s-a dovedit a fi o parte integrant\u0103 a automatiz\u0103rii. \u0218i nu se poate ocoli, chiar \u0219i f\u0103r\u0103 practic\u0103. <\/p>\n<p>Dezvolt\u00e2nd ideea, aceasta este o parte organic\u0103 a procesului CI\/CD. Dup\u0103 desf\u0103\u0219urarea configura\u021biei pe re\u021bea, trebuie s\u0103 putem determina dac\u0103 totul este \u00een regul\u0103 cu aceasta. <br \/>\n\u0218i nu este vorba doar despre graficele de utilizare a interfe\u021belor sau despre disponibilitatea nodurilor, ci \u0219i despre lucruri mai subtile - existen\u021ba route-urilor necesare, atributelor acestora, num\u0103rul sesiunilor BGP, vecinilor OSPF, func\u021bionalitatea End-to-End a serviciilor superioare.<br \/>\nDar nu cumva log-urile nu s-au mai adunat pe serverul extern, nu s-a stricat agentul SFlow, nu au \u00eenceput s\u0103 creasc\u0103 pachetele pierdute \u00een cozi, nu s-a \u00eentrerupt conectivitatea \u00eentre o pereche de prefixe?<\/p>\n<p>\u00centr-un articol separat ne vom g\u00e2ndi \u0219i la acest lucru.<\/p>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/08aeee4939081abb21e61abadd0ce5de.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Automatizarea pentru cei mai mici. Partea zero. Planificare\" src=\"\/wp-content\/uploads\/2019\/07\/13c186070c85fd00f7b6923df154f1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h1>Concluzie<\/h1>\n<p>\nCa baz\u0103 am ales unul dintre designurile moderne ale re\u021belelor de centre de date - L3 Clos Fabric cu BGP ca protocol de rutare.<br \/>\nVom construi re\u021beaua de data aceasta pe Juniper, deoarece acum interfa\u021ba JunOs este elegant\u0103.<\/p>\n<p>Ne vom complica via\u021ba folosind doar unelte Open Source \u0219i o re\u021bea multi-vendor - astfel c\u0103, pe l\u00e2ng\u0103 Juniper, \u00een timpul procesului voi alege \u0219i un alt norocos.<\/p>\n<p>Planul publica\u021biilor viitoare este aproximativ acesta:<br \/>\n\u00cent\u00e2i voi vorbi despre re\u021belele virtuale. \u00cen primul r\u00e2nd, pentru c\u0103 \u00eemi doresc, iar \u00een al doilea r\u00e2nd, pentru c\u0103 f\u0103r\u0103 aceasta designul re\u021belei de infrastructur\u0103 nu va fi foarte clar.<br \/>\nApoi, efectiv despre designul re\u021belei: topologia, rutarea, politicile.<br \/>\nVom aduna un laborator de testare.<br \/>\nNe vom g\u00e2ndi \u0219i, poate, vom exersa ini\u021bializarea echipamentului \u00een re\u021bea.<br \/>\nIar apoi despre fiecare component\u0103 \u00een detalii intime.<\/p>\n<p>\u0218i da, nu promit c\u0103 voi \u00eencheia elegant acest ciclu cu o solu\u021bie gata. \ud83d\ude42<\/p>\n<h5>Linkuri utile<\/h5>\n<p><\/p>\n<ul>\n<li>\u00cenainte s\u0103 ne ad\u00e2ncim \u00een serie, merit\u0103 citit\u0103 cartea Natashaii Samoilenko <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.gitbook.io\/pyneng\/\">Python pentru inginerii de re\u021bea.<\/a><\/noindex>. \u0218i, poate, s\u0103 urmezi <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.github.io\/pyneng-online\/\">cursul.<\/a><\/noindex>.<\/li>\n<li>De asemenea, va fi util s\u0103 cite\u0219ti <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7938\">RFC<\/a><\/noindex> despre designul fabricilor de centre de date de la Facebook, scris de Petru Lapuhov.<\/li>\n<li>Documenta\u021bia despre arhitectur\u0103 \u00ee\u021bi va oferi o idee despre cum func\u021bioneaz\u0103 SDN-ul bazat pe Overlay. <noindex><a rel=\"nofollow\" href=\"https:\/\/tungstenfabric.github.io\/website\/Tungsten-Fabric-Architecture.html\">Tungsten Fabric<\/a><\/noindex> (fosta Open Contrail) \u00ee\u021bi va oferi o idee despre cum func\u021bioneaz\u0103 SDN-ul Overlay.<\/li>\n<\/ul>\n<h5>Mul\u021bumesc<\/h5>\n<p>\nRoman Gorge. Pentru comentarii \u0219i corecturi.<br \/>\nArtiom Cernobai. Pentru KDPV.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/453516\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c. \u0414\u043e\u043b\u0433\u0438\u0435 \u0433\u043e\u0434\u044b \u043d\u0430\u0448 \u0431\u0440\u0430\u0442 \u0441\u0442\u0440\u0430\u0434\u0430\u043b \u043e\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0443\u0442\u0438\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u043a\u0440\u0435\u0449\u0438\u0432\u0430\u043b \u043f\u0430\u043b\u044c\u0446\u044b \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c \u0438 \u043d\u0435\u0434\u043e\u0441\u044b\u043f\u0430\u043b \u0438\u0437-\u0437\u0430 \u043d\u043e\u0447\u043d\u044b\u0445 \u0440\u043e\u043b\u0431\u044d\u043a\u043e\u0432. \u041d\u043e \u0442\u0451\u043c\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u0435\u0446. \u042d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u044f \u043d\u0430\u0447\u043d\u0443 \u0441\u0435\u0440\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u043e \u0445\u043e\u0434\u0443 \u0434\u0435\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0441 \u044d\u0442\u0430\u043f\u0430\u043c\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0441 RestAPI, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26891,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35972","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:08:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Automatizarea pentru cei mai mici. Partea zero. Planificare | ProHoster","description":"SDSM s-a \u00eencheiat, dar dorin\u021ba necontrolat\u0103 de a scrie a r\u0103mas.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster","og:description":"\u0421\u0414\u0421\u041c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f, \u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:08:54+00:00","article:modified_time":"2019-10-31T19:08:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35972","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 01:28:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 09:58:22","updated":"2026-01-22 01:28:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/35972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=35972"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/35972\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/26891"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=35972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=35972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=35972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}