{"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\/sv\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","title":{"rendered":"Automatisering f\u00f6r de minsta. Del noll. Planering","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>SDM \u00e4r \u00f6ver, men den okontrollerade lusten att skriva finns kvar. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/0\/kdpv.jpg\"><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/2da9a566e92a782cf1205a6da716d4c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Under m\u00e5nga \u00e5r har v\u00e5r bror lidit av att utf\u00f6ra rutinuppgifter, h\u00e5llit tummarna inf\u00f6r commit och lidit av s\u00f6mnbrist p\u00e5 grund av nattliga rollbacks.<br \/>\nMen m\u00f6rka tider har ett slut.<\/p>\n<p>Genom den h\u00e4r artikeln inleder jag en serie om hur <i>jag<\/i> ser automatisering. <br \/>\nVi kommer att g\u00e5 igenom stegen f\u00f6r automatisering, lagring av variabler, formalisering av design, med RestAPI, NETCONF, YANG, YDK och vi kommer att programmera mycket. <br \/>\n<i>Jag<\/i> menar att a) detta inte \u00e4r en objektiv sanning, b) inte den obestridliga b\u00e4sta metoden, c) min syn kan till och med f\u00f6r\u00e4ndras under resans g\u00e5ng fr\u00e5n den f\u00f6rsta till den sista artikeln \u2013 \u00e4rligt talat har jag skrivit om allt helt tv\u00e5 g\u00e5nger fr\u00e5n utkast till publicering. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Inneh\u00e5ll<\/h1>\n<p><\/p>\n<ol>\n<li> <b>M\u00e5ls\u00e4ttningar<\/b>\n<ol>\n<li>N\u00e4tverket \u2013 som en enda organism<\/li>\n<li>Konfigurationstestning<\/li>\n<li>Versionshantering<\/li>\n<li>\u00d6vervakning och sj\u00e4lvreparation av tj\u00e4nster<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Verktyg<\/b>\n<ol>\n<li>Inventeringssystem<\/li>\n<li>IP-administrationssystem<\/li>\n<li>Beskrivningssystem f\u00f6r n\u00e4tverkstj\u00e4nster<\/li>\n<li>Enhetens initieringsmekanism<\/li>\n<li>Vendor-oberoende konfigurationsmodell<\/li>\n<li>Vendor-specifik gr\u00e4nssnittdrivrutin<\/li>\n<li>Mekanism f\u00f6r att leverera konfiguration till enheten<\/li>\n<li>CI\/CD<\/li>\n<li>Backup-mekanism och s\u00f6kning efter avvikelser<\/li>\n<li>\u00d6vervakningssystem<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Slutsats<\/b>\n <\/li>\n<\/ol>\n<p>\nJag kommer att f\u00f6rs\u00f6ka genomf\u00f6ra ADSM i ett format som skiljer sig n\u00e5got fr\u00e5n SDM. Det kommer fortfarande att f\u00f6rekomma stora, detaljerade nummerartiklar, och mellan dem kommer jag att publicera sm\u00e5 anteckningar fr\u00e5n det vardagliga livet. Jag ska f\u00f6rs\u00f6ka bek\u00e4mpa perfektionismen h\u00e4r och inte finslipa var och en av dem. <\/p>\n<blockquote><p> Hur lustigt att beh\u00f6va g\u00e5 samma v\u00e4g en andra g\u00e5ng.<\/p>\n<p> Till en b\u00f6rjan var jag tvungen att sj\u00e4lv skriva artiklar om n\u00e4tverk eftersom det inte fanns n\u00e5gra p\u00e5 ryska internet.<\/p>\n<p> Nu kunde jag inte hitta ett helt\u00e4ckande dokument som systematiserade tillv\u00e4gag\u00e5ngss\u00e4tten f\u00f6r automatisering och med enkla, praktiska exempel gick igenom de ovan n\u00e4mnda teknologierna.<\/p>\n<p> Kanske har jag fel, s\u00e5 skicka l\u00e4nkar till bra resurser. Men detta kommer inte att \u00e4ndra min beslutsamhet att skriva, eftersom det prim\u00e4ra m\u00e5let \u00e4r att l\u00e4ra mig n\u00e5got sj\u00e4lv, och att underl\u00e4tta livet f\u00f6r andra \u00e4r en trevlig bonus som fr\u00e4mjar spridningen av kunskap.\n<\/p><\/blockquote>\n<p>Vi ska f\u00f6rs\u00f6ka ta ett medelstort datacenter LAN DC och arbeta fram hela automatiseringsschemat. <br \/>\nAtt g\u00f6ra vissa saker kommer jag att g\u00f6ra n\u00e4stan f\u00f6r f\u00f6rsta g\u00e5ngen tillsammans med er. <\/p>\n<blockquote><p> I de id\u00e9er och verktyg som beskrivs h\u00e4r kommer jag inte att vara originell. Dmitry Figol har en utm\u00e4rkt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MLeiShwb7Qo&amp;list=PLSwGHYY8t8JiGI9powOXDHTAXDSs7FZqt\">kanal med livestreams om detta \u00e4mne.<\/a><\/noindex>. <br \/>\n Artiklarna kommer i m\u00e5nga avseenden att \u00f6verlappa med dem. \n<\/p><\/blockquote>\n<p>I LAN DC 4 finns det 4 datacenter, cirka 250 switchar, ett halvdussin routrar och n\u00e5gra brandv\u00e4ggar. <br \/>\nInte Facebook, men tillr\u00e4ckligt f\u00f6r att fundera djupt \u00f6ver automatisering. <br \/>\nDet finns en uppfattning om att om du har mer \u00e4n en enhet, s\u00e5 beh\u00f6ver du redan automatisering. <br \/>\nDet \u00e4r faktiskt sv\u00e5rt att f\u00f6rest\u00e4lla sig att n\u00e5gon nu kan leva utan minst en h\u00f6g av skript som kan k\u00f6ras. <br \/>\n\u00c4ven om jag har h\u00f6rt att det finns s\u00e5dana f\u00f6retag d\u00e4r IP-adresser registreras i Excel, och varje av de tusentals n\u00e4tverksenheterna konfigureras manuellt och har sin unika konfiguration. Detta kan sj\u00e4lvklart framst\u00e4llas som modern konst, men en ingenj\u00f6rs k\u00e4nslor skulle s\u00e4kert bli kr\u00e4nkta. <\/p>\n<h1>M\u00e5ls\u00e4ttningar<\/h1>\n<p>\nNu kommer vi att s\u00e4tta upp maximalt abstrakta m\u00e5l:<\/p>\n<ul>\n<li>N\u00e4tverket \u2013 som en enda organism<\/li>\n<li>Konfigurationstestning<\/li>\n<li>Versionshantering av n\u00e4tverksstatus.<\/li>\n<li>\u00d6vervakning och sj\u00e4lvreparation av tj\u00e4nster<\/li>\n<\/ul>\n<p>\nSenare i denna artikel g\u00e5r vi igenom vilka verktyg vi kommer att anv\u00e4nda, och i kommande artiklar b\u00e5de m\u00e5l och medel i detalj.<\/p>\n<h2>N\u00e4tverket \u2013 som en enda organism<\/h2>\n<p>\nDen avg\u00f6rande frasen i cykeln, \u00e4ven om den vid f\u00f6rsta anblick kan verka obetydlig: <b>vi kommer att konfigurera n\u00e4tverket, inte enskilda enheter.<\/b>. <br \/>\nUnder de senaste \u00e5ren har vi sett en f\u00f6rskjutning av fokus mot att betrakta n\u00e4tverket som en enda enhet, h\u00e4rifr\u00e5n kommer ocks\u00e5 <i>Software Defined Networking<\/i>, <i>Intent Driven Networks<\/i> och <i>Autonomous Networks<\/i>. <br \/>\nVad beh\u00f6vs egentligen globalt av n\u00e4tverket f\u00f6r applikationerna: kopplingar mellan punkterna A och B (n\u00e5v\u00e4l, ibland ocks\u00e5 +C-A) och isolering fr\u00e5n andra applikationer och anv\u00e4ndare. <\/p>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/f8b43928ccc6d487722ce7724f5c4829.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5ledes \u00e4r v\u00e5r uppgift i denna serie \u2014 <b>att bygga ett system<\/b>, som st\u00f6djer den aktuella konfigurationen <b>av hela n\u00e4tverket<\/b>, som redan dekomponeras till aktuell konfiguration p\u00e5 varje enhet i enlighet med dess roll och plats. <br \/>\n<b>Systemet<\/b> n\u00e4tverksstyrning inneb\u00e4r att vi n\u00e5r ut f\u00f6r att g\u00f6ra \u00e4ndringar, och det i sin tur ber\u00e4knar det \u00f6nskade tillst\u00e5ndet f\u00f6r varje enhet och konfigurerar det. <br \/>\nP\u00e5 s\u00e5 s\u00e4tt minimerar vi n\u00e4stan helt behovet av att anv\u00e4nda CLI manuellt \u2014 eventuella \u00e4ndringar i inst\u00e4llningarna p\u00e5 enheterna eller n\u00e4tverksdesignen m\u00e5ste formaliseras och dokumenteras \u2014 och f\u00f6rst d\u00e4refter rullas ut till de n\u00f6dv\u00e4ndiga delarna av n\u00e4tverket. <\/p>\n<blockquote><p> Det vill s\u00e4ga, till exempel, om vi beslutar att fr\u00e5n och med nu ska rack-switchar i Kazan annonsera tv\u00e5 n\u00e4tverk ist\u00e4llet f\u00f6r ett, vi<\/p>\n<ol>\n<li>F\u00f6rst dokumenterar vi \u00e4ndringarna i systemen<\/li>\n<li>Vi genererar den m\u00e5linriktade konfigurationen f\u00f6r alla n\u00e4tverksenheter<\/li>\n<li>Vi startar programmet f\u00f6r att uppdatera n\u00e4tverkskonfigurationen, som ber\u00e4knar vad som m\u00e5ste tas bort p\u00e5 varje nod, vad som ska l\u00e4ggas till, och leder noderna till \u00f6nskat tillst\u00e5nd.<\/li>\n<\/ol>\n<p>\n Vid det h\u00e4r laget g\u00f6r vi manuella \u00e4ndringar endast i det f\u00f6rsta steget.\n<\/p><\/blockquote>\n<h2>Konfigurationstestning<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.wikisummaries.org\/wiki\/Visible_Ops\">Det \u00e4r v\u00e4lk\u00e4nt<\/a><\/noindex>, att 80 % av problemen uppst\u00e5r vid \u00e4ndring av konfigurationen \u2014 ett indirekt bevis p\u00e5 detta \u00e4r att under ny\u00e5rshelgen \u00e4r det vanligen lugnt. <br \/>\nJag har personligen bevittnat dussintals globala driftstopp p\u00e5 grund av m\u00e4nskligt misstag: fel kommando, utf\u00f6rt i fel gren av konfigurationen, gl\u00f6mt en community, raderat MPLS globalt p\u00e5 routern, konfigurerat fem enheter, och missat ett fel p\u00e5 den sj\u00e4tte, kommit tillbaka till gamla \u00e4ndringar som gjorts av en annan person. Det finns en hel del olika scenarier. <\/p>\n<p>Automatiseringen g\u00f6r att vi kan beg\u00e5 f\u00e4rre misstag, men i st\u00f6rre skala. S\u00e5 kan man f\u00f6rst\u00f6ra inte bara en enhet, utan hela n\u00e4tverket p\u00e5 en g\u00e5ng. <\/p>\n<p>Sedan urminnes tider har v\u00e5ra f\u00f6rf\u00e4der kontrollerat riktigheten av de f\u00f6r\u00e4ndringar som g\u00f6rs med ett skarpt \u00f6ga, st\u00e5lsatta nerver och n\u00e4tverkets funktion efter deras implementering. <br \/>\nDe f\u00f6rf\u00e4der vars arbete ledde till stillest\u00e5nd och katastrofala f\u00f6rluster l\u00e4mnade efter sig f\u00e4rre avkommor och borde med tiden d\u00f6 ut, men evolutionen \u00e4r en l\u00e5ngsam process, och d\u00e4rf\u00f6r kontrollerar inte alla fortfarande \u00e4ndringar i labbet. <br \/>\nMen i framkant av utvecklingen finns de som automatiserat processen f\u00f6r att testa konfigurationen, och vidare anv\u00e4nde den p\u00e5 n\u00e4tverket. Med andra ord \u2014 l\u00e5nat CI\/CD-proceduren (<noindex><a rel=\"nofollow\" href=\"https:\/\/img.devrant.com\/devrant\/rant\/r_1535091_ErSUL.jpg\">Continuous Integration, Continuous Deployment<\/a><\/noindex>) fr\u00e5n utvecklarna.<br \/>\nI en av delarna kommer vi att titta p\u00e5 hur man implementerar detta med hj\u00e4lp av versionskontrollsystem, troligtvis GitHub. <\/p>\n<blockquote><p> S\u00e5 snart du v\u00e4njer dig vid tanken p\u00e5 n\u00e4tverks-CI\/CD, kommer metoden att kontrollera konfigurationen genom att till\u00e4mpa den p\u00e5 det arbetsm\u00e4ssiga n\u00e4tverket att verka som en tidig medeltida okunnighet. Ungef\u00e4r som att sl\u00e5 med en hammare p\u00e5 en k\u00e4rnladdning.\n<\/p><\/blockquote>\n<p>En organisk forts\u00e4ttning p\u00e5 id\u00e9erna om <b>system f\u00f6r<\/b> n\u00e4tverkshantering och CI\/CD blir fullst\u00e4ndig versionshantering av konfigurationen. <\/p>\n<h2>Versionshantering<\/h2>\n<p>\nVi kommer att betrakta att vid varje f\u00f6r\u00e4ndring, \u00e4ven de mest obetydliga, \u00e4ven p\u00e5 en obem\u00e4rkt enhet, \u00f6verg\u00e5r hela n\u00e4tverket fr\u00e5n ett tillst\u00e5nd till ett annat.<br \/>\nOch vi utf\u00f6r alltid inte kommandot p\u00e5 enheten, vi \u00e4ndrar n\u00e4tverkets tillst\u00e5nd. <br \/>\nL\u00e5t oss kalla dessa tillst\u00e5nd versioner?<\/p>\n<p>Anta att den nuvarande versionen \u00e4r 1.0.0.<br \/>\n\u041f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f IP-\u0430\u0434\u0440\u0435\u0441 Loopback-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 ToR&#8217;\u043e\u0432? \u042d\u0442\u043e \u043c\u0438\u043d\u043e\u0440\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043d\u043e\u043c\u0435\u0440 1.0.1.<br \/>\nOm vi har reviderat ruttimportpolicys i BGP \u2013 n\u00e5got mer seri\u00f6st \u2013 blir det redan 1.1.0.<br \/>\nHar vi beslutat att \u00f6verge IGP och g\u00e5 enbart p\u00e5 BGP \u2013 detta \u00e4r redan en radikal design\u00e4ndring \u2013 2.0.0.<\/p>\n<p>Olika datacenter kan ha olika versioner \u2013 n\u00e4tverket utvecklas, ny utrustning installeras, n\u00e5gonstans l\u00e4ggs nya spinners till, n\u00e5gonstans inte, etc.<\/p>\n<p>Om <noindex><a rel=\"nofollow\" href=\"https:\/\/semver.org\">semantisk versionering<\/a><\/noindex> vi kommer att diskutera det i en separat artikel.<\/p>\n<p>Jag upprepar \u2013 varje f\u00f6r\u00e4ndring (utom diagnostiska kommandon) \u00e4r en versionuppdatering. Administrat\u00f6rerna ska informeras om eventuella avvikelser fr\u00e5n den aktuella versionen.<\/p>\n<p>Samma g\u00e4ller f\u00f6r att rulla tillbaka \u00e4ndringar \u2013 detta \u00e4r inte annulleringen av de senaste kommandona, det \u00e4r inte rollback med hj\u00e4lp av enhetens operativsystem \u2013 det \u00e4r att f\u00f6ra hela n\u00e4tverket till en ny (gammal) version. <\/p>\n<h2>\u00d6vervakning och sj\u00e4lvreparation av tj\u00e4nster<\/h2>\n<p>\nDetta \u00e4r en sj\u00e4lvklart uppgift i moderna n\u00e4tverk som n\u00e5r en ny niv\u00e5.<br \/>\nOfta praktiserar stora tj\u00e4nsteleverant\u00f6rer att det fallna tj\u00e4nsten m\u00e5ste snabbt fixas och h\u00f6jas upp igen, ist\u00e4llet f\u00f6r att unders\u00f6ka vad som h\u00e4nde.<br \/>\n\"Mycket\" betyder att man rikligt m\u00e5ste kl\u00e4 sig i \u00f6vervakningar som inom sekunder uppt\u00e4cker \u00e4ven minsta avvikelser fr\u00e5n normen.<br \/>\nOch h\u00e4r r\u00e4cker inte de vanliga metrikarna, som gr\u00e4nssnittsbelastning eller tillg\u00e4nglighet av noder. Det r\u00e4cker inte heller med att personalen manuellt \u00f6vervakar dem.<br \/>\nF\u00f6r m\u00e5nga saker m\u00e5ste det vara <noindex><a rel=\"nofollow\" href=\"https:\/\/www.irisns.com\/self-healing-network-tomorrow-look-like\/\">Self-Healing<\/a><\/noindex> \u2014 \u00f6vervakningar lyste r\u00f6tt och gick sj\u00e4lva och lade en v\u00e4xtpl\u00e5ster d\u00e4r det g\u00f6r ont.<\/p>\n<p>Och h\u00e4r \u00f6vervakar vi inte bara enskilda enheter, utan hela n\u00e4tverkets h\u00e4lsa, b\u00e5de som vitbox, vilket \u00e4r ganska f\u00f6rst\u00e5eligt, och som svartbox, vilket \u00e4r mer komplicerat.<\/p>\n<p>\nVad beh\u00f6ver vi f\u00f6r att genomf\u00f6ra s\u00e5dana ambiti\u00f6sa planer?<\/p>\n<ul>\n<li>Ha en lista \u00f6ver alla enheter i n\u00e4tverket, deras placering, roller, modeller, mjukvaruversioner. <br \/>\n <i>kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3.<\/i>\n <\/li>\n<li>Ha ett system f\u00f6r att beskriva n\u00e4tverkstj\u00e4nster. <br \/>\n <i>IGP, BGP, L2\/3VPN, Policy, ACL, NTP, SSH.<\/i><\/li>\n<li>Kunna initiera en enhet. <br \/>\n <i>V\u00e4rdnamn, Mgmt IP, Mgmt Rutt, Anv\u00e4ndare, RSA-nycklar, LLDP, NETCONF<\/i><\/li>\n<li>Konfigurera enheten och \u00e5terf\u00f6ra konfigurationen till den \u00f6nskade (inklusive tidigare) versionen.<\/li>\n<li>Testa konfigurationen.<\/li>\n<li>Regelbundet kontrollera statusen f\u00f6r alla enheter f\u00f6r avvikelse fr\u00e5n aktuell status och informera ber\u00f6rda parter.<br \/>\n <i>N\u00e5gon lade tyst till en regel i ACL p\u00e5 natten.<\/i>.<\/li>\n<li>\u00d6vervaka driftskompatibiliteten.<\/li>\n<\/ul>\n<p><\/p>\n<h1>Verktyg<\/h1>\n<p>\nDet l\u00e5ter tillr\u00e4ckligt komplicerat f\u00f6r att b\u00f6rja decomponera projektet i komponenter.<\/p>\n<p>Och det kommer att bli tio av dem:<\/p>\n<ol>\n<li>Inventeringssystem<\/li>\n<li>IP-administrationssystem<\/li>\n<li>Beskrivningssystem f\u00f6r n\u00e4tverkstj\u00e4nster<\/li>\n<li>Enhetens initieringsmekanism<\/li>\n<li>Vendor-oberoende konfigurationsmodell<\/li>\n<li>Vendor-specifik gr\u00e4nssnittdrivrutin<\/li>\n<li>Mekanism f\u00f6r att leverera konfiguration till enheten<\/li>\n<li>CI\/CD<\/li>\n<li>Backup-mekanism och s\u00f6kning efter avvikelser<\/li>\n<li>\u00d6vervakningssystem<\/li>\n<\/ol>\n<blockquote><p> Det h\u00e4r \u00e4r f\u00f6r \u00f6vrigt ett exempel p\u00e5 hur perspektivet p\u00e5 cykelm\u00e5len har f\u00f6r\u00e4ndrats \u2014 i skissens komponenter fanns det fyra.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/91132e29d359a4042b213529511f6d7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI illustrationen har jag avbildat alla komponenter och sj\u00e4lva enheten. <br \/>\n\u00d6vergripande komponenter interagerar med varandra. <br \/>\nJu st\u00f6rre block, desto mer uppm\u00e4rksamhet m\u00e5ste \u00e4gnas \u00e5t denna komponent. <\/p>\n<p><\/p>\n<h2>Komponent 1. Inventariesystem.<\/h2>\n<p>\nSj\u00e4lvklart vill vi veta vilken utrustning som finns, var den st\u00e5r, och vad den \u00e4r ansluten till. <br \/>\nInventariesystemet \u00e4r en oumb\u00e4rlig del av varje f\u00f6retag. <br \/>\nOftast har f\u00f6retaget ett separat inventariesystem f\u00f6r n\u00e4tverksenheter, som l\u00f6ser mer specifika uppgifter. <br \/>\nInom ramen f\u00f6r artikelcykeln kommer vi att kalla detta DCIM \u2014 Data Center Infrastructure Management. \u00c4ven om termen DCIM strikt taget innefattar mycket mer.<\/p>\n<p>F\u00f6r v\u00e5ra \u00e4ndam\u00e5l kommer vi att lagra f\u00f6ljande information om enheten i det:<\/p>\n<ul>\n<li>Inventarienummer<\/li>\n<li>Namn\/beskrivning <\/li>\n<li>Modell (<i>Huawei CE12800, Juniper QFX5120 osv.<\/i>)<\/li>\n<li>Karakteristiska parametrar (<i>kort, gr\u00e4nssnitt osv.<\/i>)<\/li>\n<li>Roll (<i>Leaf, Spine, Border Router osv.<\/i>)<\/li>\n<li>Plats (<i>region, stad, datacenter, rack, enhet<\/i>)<\/li>\n<li>Interkonnektioner mellan enheter.<\/li>\n<li>N\u00e4tverkstopologi.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/fac708b1bf3640a943f90247bff8216e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet \u00e4r tydligt att vi sj\u00e4lva vill veta allt detta. <br \/>\nMen hj\u00e4lper det f\u00f6r automatiseringssyften? <br \/>\nSj\u00e4lvklart. <br \/>\nTill exempel vet vi att p\u00e5 Leaf-switchar i detta datacenter, om det \u00e4r Huawei, b\u00f6r ACL f\u00f6r att filtrera viss trafik till\u00e4mpas p\u00e5 VLAN, och om det \u00e4r Juniper \u2014 p\u00e5 unit 0 p\u00e5 den fysiska gr\u00e4nssnittet. <br \/>\nEller m\u00e5ste vi rulla ut en ny Syslog-server p\u00e5 alla gr\u00e4nser i regionen.<\/p>\n<p>I den kommer vi ocks\u00e5 att lagra virtuella n\u00e4tverksenheter, till exempel virtuella routrar eller rout-reflektorer. Vi kan l\u00e4gga till DNS-servrar, NTP, Syslog och allt annat som p\u00e5 n\u00e5got s\u00e4tt relaterar till n\u00e4tverket. <\/p>\n<h2>Komponent 2. IP-utrymmeshanteringssystem.<\/h2>\n<p>\nJa, \u00e4ven idag finns det grupper av m\u00e4nniskor som h\u00e5ller reda p\u00e5 prefix och IP-adresser i en Excel-fil. Men den moderna metoden \u00e4r \u00e4nd\u00e5 en databas, med frontend i nginx\/apache, API och omfattande funktioner f\u00f6r hantering av IP-adresser och n\u00e4tverk med uppdelning i VRF.<br \/>\nIPAM \u2013 IP Address Management. <\/p>\n<p>F\u00f6r v\u00e5ra uppgifter i den kommer vi att lagra f\u00f6ljande information:<\/p>\n<ul>\n<li>VLAN<\/li>\n<li>VRF<\/li>\n<li>N\u00e4tverk\/Subn\u00e4t<\/li>\n<li>IP-adresser<\/li>\n<li>Koppling av adresser till enheter, n\u00e4tverk till platser och VLAN-nummer<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/6d476d48f95ed663d84cae052a86d129.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u041e\u043f\u044f\u0442\u044c \u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e, \u0432\u044b\u0434\u0435\u043b\u044f\u044f \u043d\u043e\u0432\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u043b\u0443\u043f\u0431\u044d\u043a\u0430 ToR&#8217;\u0430, \u043c\u044b \u043d\u0435 \u0441\u043f\u043e\u0442\u043a\u043d\u0451\u043c\u0441\u044f \u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u043d \u0443\u0436\u0435 \u0431\u044b\u043b \u043a\u043e\u043c\u0443-\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d. \u0418\u043b\u0438 \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u0432\u0430\u0436\u0434\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0446\u0430\u0445 \u0441\u0435\u0442\u0438. <br \/>\nMen hur hj\u00e4lper detta med automatiseringen? <br \/>\nEnkelt. <br \/>\nVi beg\u00e4r ett prefix med rollen Loopbacks i systemet, d\u00e4r tillg\u00e4ngliga IP-adresser finns f\u00f6r tilldelning \u2013 om det finns, tilldelar vi adressen, om inte, beg\u00e4r vi skapandet av ett nytt prefix. <br \/>\nEller vid skapandet av en enhetskonfiguration kan vi fr\u00e5n samma system ta reda p\u00e5 vilket VRF gr\u00e4nssnittet ska ligga i. <br \/>\nOch vid uppstart av en ny server g\u00e5r skriptet in i systemet, tar reda p\u00e5 vilken server-switch, vilken port och vilket subn\u00e4t som \u00e4r tilldelat gr\u00e4nssnittet \u2013 och d\u00e4rifr\u00e5n tilldelar vi serverns adress. <\/p>\n<p>\nDet framst\u00e5r som naturligt att f\u00f6rena DCIM och IPAM i ett system, s\u00e5 att funktioner inte dupliceras och vi inte beh\u00f6ver underh\u00e5lla tv\u00e5 liknande entiteter. <br \/>\nOch s\u00e5 kommer vi att g\u00f6ra. <\/p>\n<h2>Komponent 3. System f\u00f6r beskrivning av n\u00e4ttj\u00e4nster<\/h2>\n<p>\nOm de f\u00f6rsta tv\u00e5 systemen lagrar variabler som beh\u00f6ver anv\u00e4ndas p\u00e5 n\u00e5got s\u00e4tt, s\u00e5 beskriver det tredje f\u00f6r varje role av enhet hur den ska konfigureras. <br \/>\nDet \u00e4r v\u00e4rt att lyfta fram tv\u00e5 olika typer av n\u00e4ttj\u00e4nster: <\/p>\n<ul>\n<li>Infrastruktur<\/li>\n<li>Kunder.<\/li>\n<\/ul>\n<p>De f\u00f6rsta syftar till att s\u00e4kerst\u00e4lla grundl\u00e4ggande konnektivitet och hantering av enheten. H\u00e4r kan vi inkludera VTY, SNMP, NTP, Syslog, AAA, routingprotokoll, CoPP, etc. <br \/>\nDe andra organiserar en tj\u00e4nst f\u00f6r kunden: MPLS L2\/L3VPN, GRE, VXLAN, VLAN, L2TP, etc. <br \/>\nNaturligtvis finns det \u00e4ven gr\u00e4nsfall \u2013 hur ska man kategorisera MPLS LDP, BGP? Och routingprotokoll kan anv\u00e4ndas f\u00f6r kunder. Men det \u00e4r inte avg\u00f6rande. <\/p>\n<p>B\u00e5da typerna av tj\u00e4nster bryts ner i konfigurationsprimitiv:<\/p>\n<ul>\n<li>fysiska och logiska gr\u00e4nssnitt (tag\/untag, mtu)<\/li>\n<li>IP-adresser och VRF (IP, IPv6, VRF)<\/li>\n<li>ACL och trafikbehandlingspolicyer<\/li>\n<li>Protokoll (IGP, BGP, MPLS)<\/li>\n<li>Routingpolicyer (prefixlistor, community, ASN-filter).<\/li>\n<li>Tj\u00e4nsteserverar (SSH, NTP, LLDP, Syslog\u2026)<\/li>\n<li>m.fl.<\/li>\n<\/ul>\n<p>\nHur exakt vi kommer att g\u00f6ra detta vet jag inte \u00e4n. Vi ska ta itu med det i en separat artikel.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/092bc3a4b875f4a6422ee13fb580ba4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm vi skulle se lite mer realistiskt kan vi beskriva att<br \/>\nLeaf-switchar m\u00e5ste ha BGP-sessioner med alla anslutna Spine-switchar, importera de anslutna n\u00e4tverken i processen och ta emot n\u00e4tverk fr\u00e5n Spine-switchar endast med en viss prefix. Begr\u00e4nsa CoPP IPv6 ND till 10 pps m.m. <br \/>\nSpine-switcharna h\u00e5ller \u00e5 sin sida sessioner med alla anslutna leaf-switchar, fungerar som root-reflektorer och tar emot endast rutter av viss l\u00e4ngd och med viss community.<\/p>\n<h2>Komponent 4. Enhetens initieringsmekanism<\/h2>\n<p>\nUnder denna rubrik sammanfattar jag en m\u00e4ngd \u00e5tg\u00e4rder som m\u00e5ste ske f\u00f6r att enheten ska dyka upp p\u00e5 radarn och kunna n\u00e5s p\u00e5 distans.<\/p>\n<ol>\n<li>F\u00e5 enheten in i inventariesystemet.<\/li>\n<li>Tilldela en IP-adress f\u00f6r hantering.<\/li>\n<li>Konfigurera grundl\u00e4ggande \u00e5tkomst till den: <br \/>\nV\u00e4rdnamn, IP-adress f\u00f6r hantering, rutt till hanteringsn\u00e4tverket, anv\u00e4ndare, SSH-nycklar, protokoll \u2014 telnet\/SSH\/NETCONF<\/li>\n<\/ol>\n<p>Det finns tre angreppss\u00e4tt:<\/p>\n<ul>\n<li>Helt manuellt. Enheten levereras till en plattform d\u00e4r en vanlig organisk m\u00e4nniska registrerar den i systemen, ansluter med en konsol och konfigurerar den. Kan fungera p\u00e5 sm\u00e5, statiska n\u00e4tverk.<\/li>\n<li>ZTP \u2014 Zero Touch Provisioning. Utrustningen har anl\u00e4nt, st\u00e4llt sig p\u00e5 plats, f\u00e5tt en adress via DHCP, bes\u00f6kt en specifik server och sj\u00e4lvkonfigurerat. <\/li>\n<li>Infrastruktur av konsolservrar d\u00e4r den f\u00f6rsta konfigurationen sker via konsolporten i automatisk l\u00e4ge.<\/li>\n<\/ul>\n<p>Vi kommer att diskutera alla tre i en separat artikel.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/6d8d061e53b508edbbcbd98fe496ca91.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponent 5. Leverant\u00f6rsagnostisk konfigurationsmodell<\/h2>\n<p>\nHittills har alla system varit separata lappar som ger variabel och deklarativ beskrivning av vad vi skulle vilja se p\u00e5 n\u00e4tverket. Men f\u00f6rr eller senare kommer vi att beh\u00f6va hantera konkretisering. <br \/>\nI det h\u00e4r skedet kombineras primitiva, tj\u00e4nster och variabler f\u00f6r varje specifik enhet i en konfigurationsmodell, som faktiskt beskriver den fullst\u00e4ndiga konfigurationen av den specifika enheten, men p\u00e5 ett leverant\u00f6rsoberoende s\u00e4tt. <br \/>\nVad ger detta steg? Varf\u00f6r skulle man inte direkt skapa en enhetskonfiguration som kan laddas upp? <br \/>\nI sj\u00e4lva verket l\u00e5ter det oss l\u00f6sa tre uppgifter:<\/p>\n<ol>\n<li> Anpassa dig inte till ett specifikt gr\u00e4nssnitt f\u00f6r interaktion med enheten. Oavsett om det \u00e4r CLI, NETCONF, RESTCONF, SNMP \u2013 modellen kommer att vara densamma.<\/li>\n<li> Beh\u00e5ll inte antalet mallar\/skript efter antalet leverant\u00f6rer i n\u00e4tverket, och vid f\u00f6r\u00e4ndringar i designen, \u00e4ndra samma sak p\u00e5 flera st\u00e4llen.<\/li>\n<li> Ladda konfigurationen fr\u00e5n enheten (backup), strukturera den i exakt samma modell och j\u00e4mf\u00f6r direkt den m\u00e5lkonfigurationen med den befintliga f\u00f6r att ber\u00e4kna skillnaden och f\u00f6rbereda en konfigurationspatch som endast \u00e4ndrar de delar som beh\u00f6vs eller f\u00f6r att identifiera avvikelser.<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/a154c42ebe7978fcc5b2ce4f235516c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom ett resultat av detta steg f\u00e5r vi en leverant\u00f6rsoberoende konfiguration.<\/p>\n<h2>Komponent 6. Leverant\u00f6rsspecifik gr\u00e4nssnittdrivrutin<\/h2>\n<p>\n\u041d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0442\u0435\u0448\u0438\u0442\u044c \u0441\u0435\u0431\u044f \u043d\u0430\u0434\u0435\u0436\u0434\u0430\u043c\u0438 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0438\u0441\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0434\u0436\u0443\u043d\u0438\u043f\u0435\u0440, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0432 \u043d\u0430 \u043d\u0438\u0445 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c whitebox&#8217;\u044b \u0438 \u043d\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 NETCONF, RESTCONF, OpenConfig, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u0438\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0435\u043d\u0434\u043e\u0440\u0430 \u043a \u0432\u0435\u043d\u0434\u043e\u0440\u0443, \u0438 \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u0438\u0445 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d\u0438 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0434\u0430\u0434\u0443\u0442. <br \/>\nDet \u00e4r ungef\u00e4r som OpenContrail och OpenStack, som har RestAPI som sitt NorthBound-gr\u00e4nssnitt, f\u00f6rv\u00e4ntar sig helt olika anrop. <\/p>\n<p>S\u00e5 p\u00e5 femte steget m\u00e5ste den leverant\u00f6rsoberoende modellen ta den form som den kommer att skickas till h\u00e5rdvaran. <br \/>\nOch h\u00e4r \u00e4r alla medel till\u00e5tna (eller inte): CLI, NETCONF, RESTCONF, SNMP \u00e4r godtagbara.<\/p>\n<p>D\u00e4rf\u00f6r beh\u00f6ver vi en drivrutin som omvandlar resultatet fr\u00e5n f\u00f6reg\u00e5ende steg till det format som kr\u00e4vs av den specifika leverant\u00f6ren: ett set CLI-kommandon, en XML-struktur.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/6ed8e935183075fda60a209477f84937.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponent 7. Mekanism f\u00f6r distribution av konfigurationen till enheten<\/h2>\n<p>\nVi har genererat konfigurationen, men den m\u00e5ste fortfarande levereras till enheterna \u2013 och uppenbarligen inte f\u00f6r hand. <br \/>\n<b>F\u00f6r det f\u00f6rsta<\/b>, h\u00e4r uppst\u00e5r fr\u00e5gan om vilket transportmedel vi ska anv\u00e4nda? Och valet idag \u00e4r inte litet:<\/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 (\u00e4ven om det faller utanf\u00f6r listan eftersom det \u00e4r ett s\u00e4tt att leverera FIB, och inte inst\u00e4llningar)<\/li>\n<\/ul>\n<p>L\u00e5t oss klarg\u00f6ra detta. CLI \u00e4r legacy. SNMP\u2026 ehm.<br \/>\nRESTCONF \u2013 \u00e4r fortfarande en ok\u00e4nd best, REST API st\u00f6ds n\u00e4stan av ingen. D\u00e4rf\u00f6r kommer vi att fokusera p\u00e5 NETCONF i cykeln.<\/p>\n<p>Som l\u00e4saren redan har f\u00f6rst\u00e5tt, har vi vid det h\u00e4r laget definierat anv\u00e4ndargr\u00e4nssnittet \u2014 resultatet fr\u00e5n f\u00f6reg\u00e5ende steg presenteras redan i formen av det valda gr\u00e4nssnittet.<\/p>\n<p><b>F\u00f6r det andra<\/b>, och vilka verktyg kommer vi att anv\u00e4nda f\u00f6r detta?<br \/>\nH\u00e4r finns det ocks\u00e5 m\u00e5nga alternativ:<\/p>\n<ul>\n<li>Ett skr\u00e4ddarsytt skript eller en plattform. Vi kan utrusta oss med ncclient och asyncIO och g\u00f6ra allt sj\u00e4lva. Vad stoppar oss fr\u00e5n att bygga ett distributionssystem fr\u00e5n grunden?<\/li>\n<li>Ansible med sitt omfattande bibliotek av n\u00e4tverksmoduler.<\/li>\n<li>Salt med sin begr\u00e4nsade n\u00e4tverksfunktionalitet och kopplingen till Napalm.<\/li>\n<li>Egentligen Napalm, som k\u00e4nner till n\u00e5gra leverant\u00f6rer och det \u00e4r allt, adj\u00f6.<\/li>\n<li>Nornir \u2014 ytterligare ett djur som vi kommer att dissekera i framtiden.<\/li>\n<\/ul>\n<p>H\u00e4r har vi \u00e4nnu inte valt n\u00e5gon favorit \u2014 vi kommer att utforska.<\/p>\n<p>Vad \u00e4r ocks\u00e5 viktigt h\u00e4r? Konsekvenserna av konfigurationsanv\u00e4ndning. <br \/>\nOm det var framg\u00e5ngsrikt eller inte. Om vi fortfarande har tillg\u00e5ng till enheten eller inte. <br \/>\nDet verkar som att commit med bekr\u00e4ftelse och validering av vad som laddades ner till enheten kan hj\u00e4lpa h\u00e4r. <br \/>\nDetta, tillsammans med en korrekt implementering av NETCONF, minskar avsev\u00e4rt antalet l\u00e4mpliga enheter \u2014 normala commits st\u00f6ds inte av m\u00e5nga tillverkare. Men detta \u00e4r bara ett av de obligatoriska villkoren i <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>. Ingen verkar bry sig om att ingen rysk leverant\u00f6r kommer att klara kravet p\u00e5 32*100GE gr\u00e4nssnitt. Eller g\u00f6r de?<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/59d8ad3b55b9c107642550bb06fc759a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Komponent 8. CI\/CD<\/h2>\n<p>\nVid det h\u00e4r laget har vi redan en konfiguration klar f\u00f6r alla n\u00e4tverksenheter.<br \/>\nJag s\u00e4ger \"alla\", eftersom vi pratar om versionhantering av n\u00e4tverkets tillst\u00e5nd. Och \u00e4ven om det beh\u00f6vs g\u00f6ra \u00e4ndringar i inst\u00e4llningarna f\u00f6r bara en switch, ber\u00e4knas \u00e4ndringarna f\u00f6r hela n\u00e4tverket. Det \u00e4r uppenbart att de kan vara noll f\u00f6r de flesta noder.<\/p>\n<p>Men som n\u00e4mnts ovan, vi \u00e4r inte n\u00e5gra barbarer som rullar ut allt p\u00e5 en g\u00e5ng i produktion. <br \/>\nDen genererade konfigurationen m\u00e5ste f\u00f6rst passera genom CI\/CD-pipelinen.<\/p>\n<blockquote><p>CI\/CD st\u00e5r f\u00f6r Continuous Integration, Continuous Deployment. Detta \u00e4r en metod d\u00e4r teamet inte sl\u00e4pper en ny stor version varje halv\u00e5r och helt ers\u00e4tter den gamla, utan regelbundet implementerar (Deployment) ny funktionalitet i sm\u00e5 portioner, var och en av dem testas noggrant f\u00f6r kompatibilitet, s\u00e4kerhet och funktionalitet (Integration).\n<\/p><\/blockquote>\n<p>F\u00f6r detta har vi ett versionskontrollsystem som \u00f6vervakar f\u00f6r\u00e4ndringar i konfigurationen, ett laboratorium som kontrollerar att kundtj\u00e4nsten inte kraschar, ett \u00f6vervakningssystem som verifierar detta faktum, och det sista steget \u00e4r att rulla ut \u00e4ndringarna i produktionsn\u00e4tverket.<\/p>\n<p>F\u00f6rutom fels\u00f6kningskommandon m\u00e5ste alla \u00e4ndringar i n\u00e4tverket g\u00e5 igenom CI\/CD-pipelinen \u2013 det \u00e4r v\u00e5r garanti f\u00f6r ett bekymmersfritt liv och en l\u00e5ng och lycklig karri\u00e4r.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/101a5ff87c7a9c7b6776aca9daf762a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponent 9. Backup- och avvikelsehanteringssystem<\/h2>\n<p>\nVi beh\u00f6ver nog inte prata mer om backups. <br \/>\nVi kommer bara att lagra dem per cron eller vid faktiska f\u00f6r\u00e4ndringar i konfigurationen i git.<\/p>\n<p>Men den andra delen \u00e4r mer intressant \u2013 n\u00e5gon m\u00e5ste h\u00e5lla ett \u00f6ga p\u00e5 dessa backups. I vissa fall m\u00e5ste den personen g\u00e5 tillbaka och \u00e5terst\u00e4lla allt som det var, och i andra fall, informera n\u00e5gon om att det \u00e4r n\u00e5got som \u00e4r fel. <br \/>\nTill exempel, om en ny anv\u00e4ndare dyker upp som inte \u00e4r registrerad i variablerna, m\u00e5ste vi ta bort denne fr\u00e5n hacken. Och om det \u00e4r en ny brandv\u00e4ggsregel \u2013 b\u00e4ttre att inte r\u00f6ra, kanske n\u00e5gon bara har aktiverat fels\u00f6kning, eller s\u00e5 har en ny tj\u00e4nst, slarvigt, registrerats utanf\u00f6r reglerna, men folk har redan b\u00f6rjat anv\u00e4nda den.<\/p>\n<p>Vi kommer \u00e4nd\u00e5 inte att undvika en viss liten delta i skalan av hela n\u00e4tverket, oavsett vilka automatiseringssystem och den fasta hand som ledningen har. Ingen kommer \u00e4nd\u00e5 att g\u00f6ra \u00e4ndringar i konfigurationen f\u00f6r att fels\u00f6ka problem. Dessutom kanske den inte ens f\u00f6rutses i konfigurationsmodellen. <\/p>\n<blockquote><p>Till exempel, en brandv\u00e4ggsregel f\u00f6r att r\u00e4kna antalet paket till en viss IP, f\u00f6r att lokalisera problemet \u2013 \u00e4r en helt vanlig tempor\u00e4r konfiguration.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/390f78139d336f1fc2c60573bccfe76c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponent 10. \u00d6vervakningssystem<\/h2>\n<p>\nI b\u00f6rjan hade jag inte t\u00e4nkt ta upp \u00f6vervakning \u2013 det \u00e4r trots allt ett omfattande, kontroversiellt och komplext \u00e4mne. Men under tiden har det visat sig vara en oers\u00e4ttlig del av automatiseringen. Och att undvika det, \u00e4ven utan praktiska erfarenheter, \u00e4r inte m\u00f6jligt. <\/p>\n<p>Vid en vidareutveckling av tanken \u2013 det \u00e4r en organisk del av CI\/CD-processen. Efter att konfigurationen har rullats ut i n\u00e4tverket, m\u00e5ste vi kunna avg\u00f6ra om allt \u00e4r i ordning nu. <br \/>\nOch det handlar inte bara om anv\u00e4ndningsgrafer f\u00f6r gr\u00e4nssnitt eller nodernas tillg\u00e4nglighet, utan om mer subtila saker \u2013 tillg\u00e5ng till n\u00f6dv\u00e4ndiga rutter, attribut p\u00e5 dem, antal BGP-sessioner, OSPF-grannar, End-to-End-funktionaliteten hos \u00f6verliggande tj\u00e4nster.<br \/>\nHar loggarna slutat att skickas till den externa servern, har SFlow-agenten slutat fungera, har dropparna i k\u00f6erna \u00f6kat, eller har kopplingen mellan n\u00e5got par prefix blivit bruten?<\/p>\n<p>I en separat artikel kommer vi att reflektera \u00f6ver detta ocks\u00e5.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/08aeee4939081abb21e61abadd0ce5de.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Automatisering f\u00f6r de minsta. Del noll. Planering\" src=\"\/wp-content\/uploads\/2019\/07\/13c186070c85fd00f7b6923df154f1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h1>Slutsats<\/h1>\n<p>\nSom grund har jag valt en av de moderna designerna f\u00f6r datacenter-n\u00e4tverk \u2013 L3 Clos Fabric med BGP som routingprotokoll.<br \/>\nDenna g\u00e5ng kommer vi att bygga n\u00e4tverket p\u00e5 Juniper, f\u00f6r nu \u00e4r JunOs-gr\u00e4nssnittet en sk\u00f6nhet.<\/p>\n<p>Vi kommer att komplicera v\u00e5rt liv genom att anv\u00e4nda endast Open Source-verktyg och en multivendor-n\u00e4tverk \u2013 d\u00e4rf\u00f6r kommer jag, f\u00f6rutom Juniper, att v\u00e4lja ytterligare en lycklig kandidat.<\/p>\n<p>Planen f\u00f6r kommande publiceringar ser ut ungef\u00e4r s\u00e5 h\u00e4r:<br \/>\nF\u00f6rst kommer jag att prata om virtuella n\u00e4tverk. F\u00f6rst och fr\u00e4mst f\u00f6r att jag vill, och f\u00f6r det andra f\u00f6r att utan detta kommer designen av infrastruktur-n\u00e4tverket inte att vara s\u00e4rskilt tydlig.<br \/>\nSedan handlar det om n\u00e4tverksdesign: topologi, routing, policies.<br \/>\nVi ska s\u00e4tta ihop en laboratorieuppst\u00e4llning.<br \/>\nVi kommer att reflektera och kanske \u00f6va p\u00e5 att initiera en enhet i n\u00e4tverket.<br \/>\nOch sedan kommer vi att dyka ner i varje komponent i intima detaljer.<\/p>\n<p>Och ja, jag lovar inte att elegant avsluta denna cykel med en f\u00e4rdig l\u00f6sning. \ud83d\ude42<\/p>\n<h5>Nyttiga l\u00e4nkar<\/h5>\n<p><\/p>\n<ul>\n<li>Innan vi g\u00e5r djupare in i serien kan det vara bra att l\u00e4sa boken av Natasha Samoylenko <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.gitbook.io\/pyneng\/\">Python f\u00f6r n\u00e4tverksingenj\u00f6rer<\/a><\/noindex>. Och kanske ocks\u00e5 g\u00e5 igenom <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.github.io\/pyneng-online\/\">kurs<\/a><\/noindex>.<\/li>\n<li>Det kan vara anv\u00e4ndbart att l\u00e4sa <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7938\">RFC<\/a><\/noindex> om designen av datacenterfabriker fr\u00e5n Facebook, skriven av Petr Lapukhov.<\/li>\n<li>\u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Overlay&#8217;\u043d\u044b\u0439 SDN \u0432\u0430\u043c \u0434\u0430\u0441\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 <noindex><a rel=\"nofollow\" href=\"https:\/\/tungstenfabric.github.io\/website\/Tungsten-Fabric-Architecture.html\">Tungsten Fabric<\/a><\/noindex> (tidigare Open Contrail).<\/li>\n<\/ul>\n<h5>Tack<\/h5>\n<p>\nRoman Gorge. F\u00f6r kommentarer och korrigeringar.<br \/>\nArtyom Chernobai. F\u00f6r KDPV.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Automatisering f\u00f6r de minsta. Del noll. Planering | ProHoster","description":"SDM \u00e4r \u00f6ver, men den okontrollerade lusten att skriva finns kvar.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/35972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=35972"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/35972\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/26891"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=35972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=35972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=35972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}