{"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\/da\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","title":{"rendered":"Automatisering for de mindste. Del nul. Planl\u00e6gning","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>SDCM er slut, men den ukontrollerede trang til at skrive er stadig tilbage. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/fs.linkmeup.ru\/images\/adsm\/0\/kdpv.jpg\"><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/2da9a566e92a782cf1205a6da716d4c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>I mange \u00e5r har vores bror lidt under at udf\u00f8re rutinearbejde, krydset fingre inden commit og lidt s\u00f8vn p\u00e5 grund af natlige rollback.<br \/>\nMen m\u00f8rke tider har en ende.<\/p>\n<p>Med denne artikel vil jeg starte en serie om, hvordan <i>me<\/i> automatisering ses. <br \/>\nUndervejs vil vi se p\u00e5 faserne i automatiseringen, opbevaring af variable, formaliseringsdesign, RestAPI, NETCONF, YANG, YDK, og vi vil programmere meget. <br \/>\n<i>Jeg<\/i> betyder, at a) det ikke er en objektiv sandhed, b) ikke n\u00f8dvendigvis den bedste tilgang, c) mit syn kan \u00e6ndre sig selv fra den f\u00f8rste til den sidste artikel \u2014 \u00e6rligt talt, fra udkast til publicering har jeg omskrevet alt to gange. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Indhold<\/h1>\n<p><\/p>\n<ol>\n<li> <b>M\u00e5l<\/b>\n<ol>\n<li>Netv\u00e6rket \u2014 som en enkelt organisme<\/li>\n<li>Testing af konfigurationen<\/li>\n<li>Versionering<\/li>\n<li>Overv\u00e5gning og selvgenopretning af tjenester<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>V\u00e6rkt\u00f8jer<\/b>\n<ol>\n<li>Inventarsystem<\/li>\n<li>IP-rumstyringssystem<\/li>\n<li>System til beskrivelse af netv\u00e6rkstjenester<\/li>\n<li>Enhedsinitialiseringsmekanisme<\/li>\n<li>Vendor-agnostisk konfigurationsmodel<\/li>\n<li>Vendor-specifik interface-driver<\/li>\n<li>Mekanisme til levering af konfiguration til enheden<\/li>\n<li>CI\/CD<\/li>\n<li>Mekanisme til sikkerhedskopiering og afvigelsesforskning<\/li>\n<li>Overv\u00e5gningssystem<\/li>\n<\/ol>\n<p>\n <\/li>\n<li> <b>Konklusion<\/b>\n <\/li>\n<\/ol>\n<p>\nADSMP vil jeg fors\u00f8ge at f\u00f8re p\u00e5 en lidt anderledes m\u00e5de end SDCM. Store, omfattende nummerartikler vil stadig komme, og imellem dem vil jeg publicere sm\u00e5 noter fra hverdagen. Jeg vil fors\u00f8ge at bek\u00e6mpe perfektionismen her og ikke pudse hver enkelt af dem. <\/p>\n<blockquote><p> Hvor sjovt det er at skulle gennemg\u00e5 den samme vej for anden gang.<\/p>\n<p> F\u00f8rst m\u00e5tte jeg selv skrive artikler om netv\u00e6rk, fordi de ikke eksisterede i den russiske internett.<\/p>\n<p> Nu har jeg ikke kunnet finde et omfattende dokument, der systematiserer tilgange til automatisering og gennemg\u00e5r de n\u00e6vnte teknologier med simple praktiske eksempler.<\/p>\n<p> M\u00e5ske tager jeg fejl, s\u00e5 send links til gode ressourcer. Det vil dog ikke \u00e6ndre min beslutsomhed til at skrive, fordi det overordnede m\u00e5l er at l\u00e6re noget selv, og at lette livet for andre er en dejlig bonus, der beroliger den gensidige deling af erfaring.\n<\/p><\/blockquote>\n<p>Vi vil pr\u00f8ve at tage et mellemstort datacenter LAN DC og arbejde med hele automatiseringsskemaet. <br \/>\nNogle ting vil jeg g\u00f8re n\u00e6sten for f\u00f8rste gang sammen med dig. <\/p>\n<blockquote><p> I de beskrevne ideer og v\u00e6rkt\u00f8jer vil jeg ikke v\u00e6re original. Dmitrij Figol har en fremragende <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MLeiShwb7Qo&amp;list=PLSwGHYY8t8JiGI9powOXDHTAXDSs7FZqt\">kanal med streams om dette emne<\/a><\/noindex>. <br \/>\n Artiklerne vil p\u00e5 mange m\u00e5der krydse hinanden. \n<\/p><\/blockquote>\n<p>I LAN DC er der 4 datacentre, omkring 250 switches, et halvt dusin routere og et par firewalls. <br \/>\nDet er ikke Facebook, men tilstr\u00e6kkeligt til at man kan t\u00e6nke dybt over automatisering. <br \/>\nDet er dog en udbredt opfattelse, at hvis man har mere end 1 enhed, er automatisering allerede n\u00f8dvendig. <br \/>\nDet er faktisk sv\u00e6rt at forestille sig, at nogen i dag kan leve uden mindst en bunke knap s\u00e5 grundl\u00e6ggende scripts. <br \/>\nSelvf\u00f8lgelig har jeg h\u00f8rt om firmaer, hvor IP-adresser bliver registreret i Excel, og hver af de tusinde netv\u00e6rksenheder konfigureres manuelt og har sin egen unikke ops\u00e6tning. Det kan man selvf\u00f8lgelig kalde moderne kunst, men en ingeni\u00f8rs f\u00f8lelser vil helt sikkert blive kr\u00e6nket. <\/p>\n<h1>M\u00e5l<\/h1>\n<p>\nI dag vil vi s\u00e6tte de mest abstrakte m\u00e5l:<\/p>\n<ul>\n<li>Netv\u00e6rket \u2014 som en enkelt organisme<\/li>\n<li>Testing af konfigurationen<\/li>\n<li>Versionsstyring af netv\u00e6rkets tilstand<\/li>\n<li>Overv\u00e5gning og selvgenopretning af tjenester<\/li>\n<\/ul>\n<p>\nSenere i denne artikel vil vi gennemg\u00e5 hvilke v\u00e6rkt\u00f8jer vi vil bruge, og i de f\u00f8lgende vil vi g\u00e5 i dybden med b\u00e5de m\u00e5l og midler.<\/p>\n<h2>Netv\u00e6rket \u2014 som en enkelt organisme<\/h2>\n<p>\nDen bestemte s\u00e6tning i cyklen, selvom den ved f\u00f8rste \u00f8jekast kan synes mindre betydningsfuld: <b>vi vil konfigurere netv\u00e6rket, ikke enkeltst\u00e5ende enheder<\/b>. <br \/>\nDe seneste \u00e5r har vi observeret et skift i fokus mod at behandle netv\u00e6rket som en samlet enhed, heraf de <i>Software Defined Networking<\/i>, <i>Intent Driven Networks<\/i> og <i>Autonomous Networks<\/i>. <br \/>\nFor hvad har applikationerne globalt set brug for fra netv\u00e6rket: forbindelser mellem punkt A og B (nogle gange +C-D) og isolering fra andre applikationer og brugere. <\/p>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/f8b43928ccc6d487722ce7724f5c4829.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg dermed er vores opgave i denne serie \u2014 <b>at opbygge et system<\/b>, der underst\u00f8tter den aktuelle konfiguration <b>af hele netv\u00e6rket<\/b>, som allerede kan dekomponeres til den aktuelle konfiguration p\u00e5 hver enhed i forhold til dens rolle og placering. <br \/>\n<b>System<\/b> netv\u00e6rksstyring indeb\u00e6rer, at for at foretage \u00e6ndringer henvender vi os til det, og det beregner s\u00e5 den \u00f8nskede tilstand for hver enhed og konfigurerer den. <br \/>\nP\u00e5 den m\u00e5de minimerer vi n\u00e6sten helt behovet for at g\u00e5 ind i CLI manuelt \u2014 alle \u00e6ndringer i enhedernes indstillinger eller netv\u00e6rksdesign skal v\u00e6re formaliseret og dokumenteret \u2014 og f\u00f8rst derefter rulles de ud p\u00e5 de relevante netv\u00e6rkelementer. <\/p>\n<blockquote><p> Det vil sige, for eksempel, hvis vi besluttede, at rack-switchene i Kazan fra nu af skal annoncere to netv\u00e6rk i stedet for \u00e9t, s\u00e5<\/p>\n<ol>\n<li>F\u00f8rst dokumenterer vi \u00e6ndringerne i systemerne<\/li>\n<li>Vi genererer den m\u00e5lrettede konfiguration for alle enheder i netv\u00e6rket<\/li>\n<li>Vi starter programmet til opdatering af netv\u00e6rkskonfigurationen, som beregner, hvad der skal fjernes p\u00e5 hver node, hvad der skal tilf\u00f8jes, og bringer noderne til den \u00f8nskede tilstand.<\/li>\n<\/ol>\n<p>\n I denne proces foretager vi manuelt \u00e6ndringer kun i det f\u00f8rste trin.\n<\/p><\/blockquote>\n<h2>Testing af konfigurationen<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.wikisummaries.org\/wiki\/Visible_Ops\">Det er kendt<\/a><\/noindex>, at 80% af problemerne opst\u00e5r under \u00e6ndring af konfigurationen \u2013 et indirekte bevis herp\u00e5 er, at det normalt er stille i perioden omkring nyt\u00e5r. <br \/>\nJeg har personligt v\u00e6ret vidne til dusinvis af globale nedbrud p\u00e5 grund af menneskelige fejl: forkert kommando, udf\u00f8rt i den forkerte konfigurationsgren, glemt community, globalt slettet MPLS p\u00e5 routeren, konfigureret fem enheder, men p\u00e5 den sjette bem\u00e6rkede vi ikke fejlen, commitede gamle \u00e6ndringer foretaget af en anden person. Der er utallige scenarier. <\/p>\n<p>Automatisering vil tillade os at lave f\u00e6rre fejl, men i st\u00f8rre skala. S\u00e5ledes kan vi s\u00e6tte ikke bare \u00e9n enhed ud af drift, men hele netv\u00e6rket p\u00e5 \u00e9n gang. <\/p>\n<p>Siden tidernes morgen har vores forf\u00e6dre kontrolleret korrektheden af de indf\u00f8rte \u00e6ndringer med skarpt blik, st\u00e5l\u00e6g og netv\u00e6rkets funktionalitet efter implementeringen. <br \/>\nDe forf\u00e6dre, hvis arbejde f\u00f8rte til nedetid og katastrofale tab, efterlod f\u00e6rre efterkommere og burde over tid udd\u00f8, men evolutionen er en langsom proces, og derfor er der stadig ikke alle, der p\u00e5 forh\u00e5nd tester \u00e6ndringer i et laboratorium. <br \/>\nMen p\u00e5 spidsen af fremskridtene er dem, der har automatiseret testprocessen for konfigurationen og dens efterf\u00f8lgende anvendelse p\u00e5 netv\u00e6rket. Med andre ord \u2013 de har l\u00e5nt CI\/CD-processen (<noindex><a rel=\"nofollow\" href=\"https:\/\/img.devrant.com\/devrant\/rant\/r_1535091_ErSUL.jpg\">Continuous Integration, Continuous Deployment<\/a><\/noindex>) fra udviklerne.<br \/>\nI en af \u200b\u200bsektionerne vil vi se p\u00e5, hvordan man realiserer dette ved hj\u00e6lp af et versionskontrolsystem, sandsynligvis GitHub. <\/p>\n<blockquote><p> S\u00e5 snart du v\u00e6nner dig til ideen om netv\u00e6rk CI\/CD, vil metoden til at kontrollere konfigurationen ved at anvende den p\u00e5 det arbejdsnetv\u00e6rk forekomme dig som tidlig middelalderlig uvidenhed. Lidt som at banksl\u00e5 p\u00e5 en atomkrigsheading.\n<\/p><\/blockquote>\n<p>Den organiske forl\u00e6ngelse af id\u00e9erne om <b>netv\u00e6rksstyringssystemet og CI\/CD bliver et fuldst\u00e6ndigt versionsstyret konfiguration.<\/b> netv\u00e6rksstyring og CI\/CD bliver en fuldgyldig versionskontrol af konfigurationen. <\/p>\n<h2>Versionering<\/h2>\n<p>\nVi vil antage, at ved enhver \u00e6ndring, selv de mindste, selv p\u00e5 en usynlig enhed, g\u00e5r hele netv\u00e6rket fra en tilstand til en anden.<br \/>\nOg vi udf\u00f8rer altid ikke kommandoen p\u00e5 enheden, vi \u00e6ndrer netv\u00e6rkets tilstand. <br \/>\nLad os kalde disse tilstande versioner?<\/p>\n<p>Lad os sige, at den aktuelle version er 1.0.0.<br \/>\nEr IP-adressen p\u00e5 Loopback-gr\u00e6nsefladen \u00e6ndret p\u00e5 en af ToR-enhederne? Dette er en minde-version \u2014 den f\u00e5r nummer 1.0.1.<br \/>\nReviderede importpolitikkerne for ruter i BGP \u2014 lidt mere alvorligt \u2014 allerede 1.1.0.<br \/>\nBestemte os for at slippe af med IGP og kun skifte til BGP \u2014 det er allerede en radikal \u00e6ndring af design \u2014 2.0.0.<\/p>\n<p>Derudover kan forskellige datacentre have forskellige versioner \u2014 netv\u00e6rket udvikler sig, nyt udstyr installeres, nogle steder tilf\u00f8jes nye spines niveauer, andre steder ikke osv.<\/p>\n<p>Om <noindex><a rel=\"nofollow\" href=\"https:\/\/semver.org\">semantisk versionering<\/a><\/noindex> vi vil tale om det i en separat artikel.<\/p>\n<p>Jeg gentager \u2014 enhver \u00e6ndring (bortset fra fejlfinding kommandoer) er en versionopdatering. Administratorer skal informeres om eventuelle afvigelser fra den aktuelle version.<\/p>\n<p>Det samme g\u00e6lder for tilbagesendelse af \u00e6ndringer \u2014 det handler ikke om at annullere de seneste kommandoer, det er ikke et rollback udf\u00f8rt af en enheds operativsystem \u2014 det er at bringe hele netv\u00e6rket til en ny (gammel) version. <\/p>\n<h2>Overv\u00e5gning og selvgenopretning af tjenester<\/h2>\n<p>\nDenne \u00e5benlyse opgave i moderne netv\u00e6rk n\u00e5r et nyt niveau.<br \/>\nOfte praktiserer store serviceudbydere den tilgang, at en nedbrudt service skal hurtigt rettes og en ny skal t\u00e6ndes, i stedet for at finde ud af, hvad der skete.<br \/>\n\u00abMeget\u00bb betyder, at man fra alle sider skal v\u00e6re rigeligt d\u00e6kket ind med overv\u00e5gning, der inden for sekunder opdager de mindste afvigelser fra normen.<br \/>\nOg her er det ikke nok med de s\u00e6dvanlige m\u00e5linger, som belastningen p\u00e5 gr\u00e6nsefladen eller tilg\u00e6ngeligheden af noden. Det er heller ikke nok med den manuelle overv\u00e5gning, som vagthavende foretager.<br \/>\nFor mange ting skal der faktisk v\u00e6re <noindex><a rel=\"nofollow\" href=\"https:\/\/www.irisns.com\/self-healing-network-tomorrow-look-like\/\">Self-Healing<\/a><\/noindex> \u2014 overv\u00e5gningerne t\u00e6ndte r\u00f8dt, og de gik selv og lagde et plaster der, hvor det g\u00f8r ondt.<\/p>\n<p>Og her overv\u00e5ger vi heller ikke kun enkelte enheder, men hele netv\u00e6rkets sundhed, b\u00e5de som hvidboks, hvilket er relativt forst\u00e5eligt, og som sortboks, hvilket er mere komplekst.<\/p>\n<p>\nHvad har vi brug for til at realisere s\u00e5danne ambiti\u00f8se planer?<\/p>\n<ul>\n<li>At have en liste over alle enheder i netv\u00e6rket, deres placering, roller, modeller, softwareversioner. <br \/>\n <i>kazan-leaf-1.lmu.net, Kazan, leaf, Juniper QFX 5120, R18.3.<\/i>\n <\/li>\n<li>At have et system til beskrivelse af netv\u00e6rkstjenester. <br \/>\n <i>IGP, BGP, L2\/3VPN, Policy, ACL, NTP, SSH.<\/i><\/li>\n<li>At v\u00e6re i stand til at initialisere en enhed. <br \/>\n <i>V\u00e6rtsnavn, Mgmt IP, Mgmt Rute, Brugere, RSA-n\u00f8gle, LLDP, NETCONF<\/i><\/li>\n<li>Konfigurere enheden og bringe konfigurationen til den \u00f8nskede (herunder gamle) version.<\/li>\n<li>Test konfigurationen<\/li>\n<li>Regelm\u00e6ssigt kontrollere tilstanden af alle enheder for afvigelser fra det aktuelle og informere de relevante parter.<br \/>\n <i>Om natten tilf\u00f8jede nogen stille et regel i ACL<\/i>.<\/li>\n<li>Overv\u00e5ge driftsstatus.<\/li>\n<\/ul>\n<p><\/p>\n<h1>V\u00e6rkt\u00f8jer<\/h1>\n<p>\nDet lyder ret komplekst, n\u00e5r man skal begynde at dekomponere projektet i komponenter.<\/p>\n<p>Og der vil v\u00e6re ti af dem:<\/p>\n<ol>\n<li>Inventarsystem<\/li>\n<li>IP-rumstyringssystem<\/li>\n<li>System til beskrivelse af netv\u00e6rkstjenester<\/li>\n<li>Enhedsinitialiseringsmekanisme<\/li>\n<li>Vendor-agnostisk konfigurationsmodel<\/li>\n<li>Vendor-specifik interface-driver<\/li>\n<li>Mekanisme til levering af konfiguration til enheden<\/li>\n<li>CI\/CD<\/li>\n<li>Mekanisme til sikkerhedskopiering og afvigelsesforskning<\/li>\n<li>Overv\u00e5gningssystem<\/li>\n<\/ol>\n<blockquote><p> Dette er for \u00f8vrigt et eksempel p\u00e5, hvordan synet p\u00e5 m\u00e5lene i cyklussen har \u00e6ndret sig \u2014 i udkastet til komponenterne var der 4.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/91132e29d359a4042b213529511f6d7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e5 illustrationen har jeg skildret alle komponenter og selve enheden. <br \/>\nSammenfaldende komponenter interagerer med hinanden. <br \/>\nJo st\u00f8rre blokkene er, jo mere opm\u00e6rksomhed kr\u00e6ver denne komponent. <\/p>\n<p><\/p>\n<h2>Komponent 1. Inventar-system<\/h2>\n<p>\nDet er \u00e5benlyst, at vi \u00f8nsker at vide, hvilket udstyr der st\u00e5r hvor, og hvad det er tilsluttet. <br \/>\nInventar-systemet er en uundg\u00e5elig del af enhver virksomhed. <br \/>\nOfte har virksomheder et s\u00e6rskilt inventar-system for netv\u00e6rksenheder, som l\u00f8ser mere specifikke opgaver. <br \/>\nI denne artikelcyklus vil vi referere til dette som DCIM \u2014 Data Center Infrastructure Management. Selvom termen DCIM strengt talt d\u00e6kker meget mere.<\/p>\n<p>Til vores form\u00e5l vil vi gemme f\u00f8lgende oplysninger om enheden:<\/p>\n<ul>\n<li>Inventarnummer<\/li>\n<li>Navn\/beskrivelse <\/li>\n<li>Model (<i>Huawei CE12800, Juniper QFX5120 osv.<\/i>)<\/li>\n<li>Karakteristiske parametre (<i>kredse, gr\u00e6nseflader osv.<\/i>)<\/li>\n<li>Rolle (<i>Leaf, Spine, Border Router osv.<\/i>)<\/li>\n<li>Lokation (<i>region, by, datacenter, rack, enhed<\/i>)<\/li>\n<li>Interkonnekter mellem enheder<\/li>\n<li>Netv\u00e6rkstopologi<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/fac708b1bf3640a943f90247bff8216e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er klart, at vi gerne selv vil vide alt dette. <br \/>\nMen hj\u00e6lper det med automatisering? <br \/>\nBestemt. <br \/>\nFor eksempel ved vi, at i dette datacenter skal ACL til filtrering af bestemt trafik p\u00e5 Leaf-switches, hvis det er Huawei, anvendes p\u00e5 VLAN, mens det, hvis det er Juniper, skal anvendes p\u00e5 unit 0 af den fysiske gr\u00e6nseflade. <br \/>\nEller skal en ny Syslog-server rulles ud p\u00e5 alle gr\u00e6nser i regionen.<\/p>\n<p>Her vil vi ogs\u00e5 gemme virtuelle netv\u00e6rksenheder, s\u00e5som virtuelle routere eller rutereflektorer. Vi kan tilf\u00f8je DNS-servere, NTP, Syslog, og generelt alt, der omhandler netv\u00e6rket. <\/p>\n<h2>Komponent 2. IP-adresseh\u00e5ndteringssystem<\/h2>\n<p>\nJa, i vores tid findes der stadig grupper af mennesker, der holder styr p\u00e5 pr\u00e6fikser og IP-adresser i Excel-filer. Men den moderne tilgang er trods alt en database, med et frontend p\u00e5 nginx\/apache, API og omfattende funktioner til at holde styr p\u00e5 IP-adresser og netv\u00e6rk med opdeling i VRF.<br \/>\nIPAM \u2013 IP Adresse Management. <\/p>\n<p>Til vores opgaver vil vi opbevare f\u00f8lgende information i den:<\/p>\n<ul>\n<li>VLAN<\/li>\n<li>VRF<\/li>\n<li>Netv\u00e6rk\/Subnetv\u00e6rk<\/li>\n<li>IP-adresser<\/li>\n<li>Binding af adresser til enheder, netv\u00e6rk til lokationer og VLAN-numre<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/6d476d48f95ed663d84cae052a86d129.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er klart, at vi vil v\u00e6re sikre p\u00e5, at n\u00e5r vi tildeler en ny IP-adresse til ToR's loopback, s\u00e5 st\u00f8der vi ikke ind i det, at den allerede er blevet tildelt til nogen. Eller at vi har brugt den samme pr\u00e6fiks to gange p\u00e5 forskellige ender af netv\u00e6rket. <br \/>\nMen hvordan kan det hj\u00e6lpe med automatisering? <br \/>\nNem. <br \/>\nVi anmoder systemet om pr\u00e6fikset med rollen Loopbacks, hvor der er tilg\u00e6ngelige IP-adresser til tildeling \u2013 hvis det findes, tildeler vi adressen, hvis ikke, anmoder vi om oprettelse af et nyt pr\u00e6fiks. <br \/>\nEller n\u00e5r vi opretter konfigurationen af en enhed, kan vi fra dette system finde ud af, hvilket VRF interfacet skal v\u00e6re en del af. <br \/>\nN\u00e5r en ny server startes, g\u00e5r scriptet til systemet, finder ud af, hvilken serverswitch, hvilken port og hvilket subnet der er tildelt interfacet \u2013 og derfra vil den tildeles serverens adresse. <\/p>\n<p>\nDet er fristende at kombinere DCIM og IPAM i \u00e9t system, s\u00e5 vi ikke duplicerer funktioner og skal vedligeholde to lignende enheder. <br \/>\nOg det vil vi g\u00f8re. <\/p>\n<h2>Komponent 3. System til beskrivelse af netv\u00e6rkstjenester<\/h2>\n<p>\nHvis de f\u00f8rste to systemer gemmer variabler, som stadig skal bruges p\u00e5 en eller anden m\u00e5de, s\u00e5 beskriver den tredje, hvordan hver rolle enhed skal konfigureres. <br \/>\nDet er v\u00e6rd at fremh\u00e6ve to forskellige typer netv\u00e6rkstjenester: <\/p>\n<ul>\n<li>Infrastruktur<\/li>\n<li>Kunde.<\/li>\n<\/ul>\n<p>De f\u00f8rste er designet til at sikre basiskonnectivitet og enhedsh\u00e5ndtering. Dette kan inkludere VTY, SNMP, NTP, Syslog, AAA, routingprotokoller, CoPP osv. <br \/>\nDe sidstn\u00e6vnte organiserer en tjeneste til kunden: MPLS L2\/L3VPN, GRE, VXLAN, VLAN, L2TP osv. <br \/>\nSelvf\u00f8lgelig er der ogs\u00e5 gr\u00e6nsetilf\u00e6lde \u2013 hvor skal MPLS LDP, BGP henregnes? Og routingprotokoller kan ogs\u00e5 bruges til kunder. Men det er ikke afg\u00f8rende. <\/p>\n<p>Begge typer tjenester deles op i konfigurationsprimitive:<\/p>\n<ul>\n<li>fysiske og logiske gr\u00e6nseflader (tag\/antag, mtu)<\/li>\n<li>IP-adresser og VRF (IP, IPv6, VRF)<\/li>\n<li>ACL og trafikbehandlingspolitikker<\/li>\n<li>Protokoller (IGP, BGP, MPLS)<\/li>\n<li>Routingpolitikker (pr\u00e6fiks-lister, communities, ASN-filtre).<\/li>\n<li>Driftstjenester (SSH, NTP, LLDP, Syslog\u2026)<\/li>\n<li>O.s.<\/li>\n<\/ul>\n<p>\nHvordan vi pr\u00e6cist vil g\u00f8re dette, har jeg endnu ikke fundet ud af. Vi vil se p\u00e5 det i en separat artikel.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/092bc3a4b875f4a6422ee13fb580ba4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis vi ser lidt mere p\u00e5 livet, kunne vi beskrive, hvad<br \/>\nLeaf-switchen skal have BGP-sessioner med alle tilsluttede Spine-switches, importere de tilsluttede netv\u00e6rk til processen, og kun acceptere netv\u00e6rk fra Spine-switches med en bestemt pr\u00e6fiks. Begr\u00e6nse CoPP IPv6 ND til 10 pps o.s.v. <br \/>\nSpine-switchene har s\u00e6der med alle tilsluttede Leaf-b\u00e5de, fungerer som root-reflektorer og modtager kun ruter af en bestemt l\u00e6ngde og med et bestemt community.<\/p>\n<h2>Komponent 4. Enhedens initialiseringsmekanisme<\/h2>\n<p>\nUnder denne overskrift samler jeg mange handlinger, der skal finde sted, for at enheden kan blive synlig og v\u00e6re tilg\u00e6ngelig fjernbetjent.<\/p>\n<ol>\n<li>Tilf\u00f8j enheden til inventarsystemet.<\/li>\n<li>Tildele en IP-adresse til administration.<\/li>\n<li>Konfigurere grundl\u00e6ggende adgang til den: <br \/>\nHostname, administrations-IP-adresse, rute til administrationsnetv\u00e6rket, brugere, SSH-n\u00f8gler, protokoller \u2014 telnet\/SSH\/NETCONF<\/li>\n<\/ol>\n<p>Der er tre tilgange:<\/p>\n<ul>\n<li>Alt helt manuelt. Enheden bringes til en stand, hvor en almindelig person tilmelder den i systemerne, tilslutter sig via konsollen og konfigurerer den. Kan fungere i sm\u00e5 statiske netv\u00e6rk.<\/li>\n<li>ZTP \u2014 Zero Touch Provisioning. Udstyr ankom, blev tilsluttet, fik en adresse via DHCP og gik til en speciel server for at selvkonfigurere. <\/li>\n<li>Infrastrukturen for konsolservere, hvor den prim\u00e6re konfiguration sker via konsolporten i automatiseret tilstand.<\/li>\n<\/ul>\n<p>Vi vil tale om alle tre i en separat artikel.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/6d8d061e53b508edbbcbd98fe496ca91.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponent 5. Vendor-agnostisk konfigurationsmodel<\/h2>\n<p>\nIndtil nu har alle systemer v\u00e6ret usammenh\u00e6ngende lapper, der giver variable og deklarative beskrivelser af, hvad vi gerne ville se i netv\u00e6rket. Men f\u00f8r eller siden m\u00e5 vi h\u00e5ndtere konkretisering. <br \/>\nI dette trin kombineres primitivene, tjenesterne og variablerne for hvert specifikt udstyr i en konfigurationsmodel, der faktisk beskriver den fulde konfiguration af det specifikke udstyr, men p\u00e5 en vendor-uafh\u00e6ngig m\u00e5de. <br \/>\nHvad giver dette skridt? Hvorfor ikke straks danne konfigurationen af udstyret, s\u00e5 den bare kan uploades? <br \/>\nDette l\u00f8ser faktisk tre opgaver:<\/p>\n<ol>\n<li> Undg\u00e5 at tilpasse sig et specifikt interface til interaktion med enhed. Uanset om det er CLI, NETCONF, RESTCONF, SNMP \u2014 modellen vil v\u00e6re den samme.<\/li>\n<li> Undg\u00e5 at have et antal skabeloner\/scripts svarende til antallet af leverand\u00f8rer i netv\u00e6rket, og hvis designet \u00e6ndres, skal du \u00e6ndre det samme p\u00e5 flere steder.<\/li>\n<li> Indl\u00e6s konfigurationen fra enheden (backup), distribuer den i n\u00f8jagtig samme model og sammenlign den \u00f8nskede konfiguration med den eksisterende for at beregne deltaet og forberede en konfigurationspatch, der kun \u00e6ndrer de dele, der er n\u00f8dvendige, eller til at identificere afvigelser.<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/a154c42ebe7978fcc5b2ce4f235516c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom et resultat af dette trin f\u00e5r vi en leverand\u00f8r-uafh\u00e6ngig konfiguration.<\/p>\n<h2>Komponent 6. Leverand\u00f8r-interface specifik driver<\/h2>\n<p>\nMan skal ikke bilde sig ind, at det en dag vil v\u00e6re muligt at konfigurere Cisco p\u00e5 samme m\u00e5de som Juniper, ved blot at sende helt ens anmodninger til dem. P\u00e5 trods af den stigende popularitet af whiteboxes og fremkomsten af underst\u00f8ttelse af NETCONF, RESTCONF, OpenConfig, er det specifikke indhold, der leveres af disse protokoller, forskelligt fra leverand\u00f8r til leverand\u00f8r, og det er en af deres konkurrencefordele, som de ikke nemt vil give afkald p\u00e5. <br \/>\nDet er omtrent det samme som OpenContrail og OpenStack, der har RestAPI som deres NorthBound-interface, men forventer helt forskellige kald. <\/p>\n<p>S\u00e5 p\u00e5 det femte trin skal den leverand\u00f8r-uafh\u00e6ngige model tage den form, den skal have, n\u00e5r den skal p\u00e5 hardware. <br \/>\nOg her er alle midler gode (n\u00e6sten): CLI, NETCONF, RESTCONF, SNMP \u2014 alle de gode gamle.<\/p>\n<p>Derfor har vi brug for en driver, der konverterer resultatet fra det forrige trin til det n\u00f8dvendige format for den specifikke leverand\u00f8r: et s\u00e6t CLI-kommandoer, XML-struktur.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/6ed8e935183075fda60a209477f84937.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponent 7. Mekanisme til levering af konfiguration til enheden<\/h2>\n<p>\nVi har genereret konfigurationen, men den skal ogs\u00e5 leveres til enhederne \u2014 og \u00e5benbart ikke manuelt. <br \/>\n<b>For det f\u00f8rste<\/b>, foran os opst\u00e5r sp\u00f8rgsm\u00e5let om, hvilken transport vi skal bruge? Valget i dag er allerede ikke lille:<\/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 (selvom det falder udenfor listen, da det er en m\u00e5de at levere FIB, ikke konfigurationer)<\/li>\n<\/ul>\n<p>Lad os her f\u00e5 afklaret tingene. CLI \u2014 det er legacy. SNMP\u2026 ahem.<br \/>\nRESTCONF \u2014 er stadig en ukendt st\u00f8rrelse, REST API underst\u00f8ttes n\u00e6sten ikke af nogen. Derfor vil vi i cyklen fokusere p\u00e5 NETCONF.<\/p>\n<p>Som faktisk allerede l\u00e6seren har forst\u00e5et, har vi omkring dette tidspunkt allerede bestemt os for gr\u00e6nsefladen \u2014 resultatet af det tidligere trin er allerede pr\u00e6senteret i formatet af den valgte gr\u00e6nseflade.<\/p>\n<p><b>For det andet<\/b>, og hvilke v\u00e6rkt\u00f8jer vil vi bruge til at g\u00f8re det?<br \/>\nHer er valget ogs\u00e5 stort:<\/p>\n<ul>\n<li>Eget skript eller platform. Lad os bev\u00e6bne os med ncclient og asyncIO og g\u00f8re det selv. Hvad koster det os at bygge et deploymentsystem fra bunden?<\/li>\n<li>Ansible med sit righoldige bibliotek af netv\u00e6rksmoduler.<\/li>\n<li>Salt med sit sparsomme arbejde med netv\u00e6rk og forbindelsen til Napalm.<\/li>\n<li>Egentlig Napalm, som kender et par leverand\u00f8rer og det hele; farvel.<\/li>\n<li>Nornir \u2014 endnu et lille dyr, som vi vil dissekere i fremtiden.<\/li>\n<\/ul>\n<p>Her er der ikke valgt en favorit endnu \u2014 vi skal se os omkring.<\/p>\n<p>Hvad er ellers vigtigt her? Konsekvenserne af anvendelsen af konfigurationen. <br \/>\nOm det er vellykket eller ej. Er der stadig adgang til hardwaren eller ej. <br \/>\nDet ser ud til, at et commit med bekr\u00e6ftelse og validering af, hvad der er blevet indl\u00e6st p\u00e5 enheden, vil hj\u00e6lpe her. <br \/>\nDette sammen med en korrekt implementering af NETCONF indsn\u00e6vrer markant kredsen af egnede enheder \u2014 normale commits underst\u00f8ttes ikke af mange producenter. Men dette er bare et af de obligatoriske vilk\u00e5r 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>. I sidste ende bekymrer ingen sig om, at ingen russiske leverand\u00f8rer vil opfylde betingelsen for 32*100GE-gr\u00e6nsefladen. Eller g\u00f8r de?<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" 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>\nP\u00e5 dette tidspunkt har vi allerede en konfiguration klar til alle netv\u00e6rksenheder.<br \/>\nJeg skriver \"til alle\", fordi vi taler om versionering af netv\u00e6rkets tilstand. Og selv hvis der kun er behov for at \u00e6ndre indstillingerne for en enkelt switch, beregnes \u00e6ndringerne for hele netv\u00e6rket. Det er \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, at de kan v\u00e6re nul for de fleste noder.<\/p>\n<p>Men som allerede n\u00e6vnt ovenfor, er vi jo ikke nogle barbarer, der smider alt lige ind i produktion. <br \/>\nDen genererede konfiguration skal f\u00f8rst g\u00e5 gennem Pipeline CI\/CD.<\/p>\n<blockquote><p>CI\/CD st\u00e5r for Continuous Integration, Continuous Deployment. Det er en tilgang, hvor teamet ikke tilbyder en ny stor opdatering hver sjette m\u00e5ned og helt erstatter den gamle, men regelm\u00e6ssigt inkrementelt implementerer (Deployment) ny funktionalitet i sm\u00e5 portioner, som hver is\u00e6r bliver grundigt testet for kompatibilitet, sikkerhed og funktionalitet (Integration).\n<\/p><\/blockquote>\n<p>Til dette har vi et versionskontrolsystem, der holder \u00f8je med \u00e6ndringerne i konfigurationen, et laboratorium, hvor vi tester, om kundeservicen ikke g\u00e5r ned, et overv\u00e5gningssystem, der kontrollerer dette, og det sidste trin \u2013 udrulning af \u00e6ndringer til det operative netv\u00e6rk.<\/p>\n<p>Med undtagelse af debug-kommandoer skal absolut alle \u00e6ndringer p\u00e5 netv\u00e6rket g\u00e5 gennem CI\/CD Pipeline \u2013 det er vores garanti for en rolig tilv\u00e6relse og en lang, lykkelig karriere.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/101a5ff87c7a9c7b6776aca9daf762a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponent 9. Backup- og afvigelsesfindingssystem<\/h2>\n<p>\nDet er ikke n\u00f8dvendigt at tale om backups endnu en gang. <br \/>\nVi vil bare gemme dem enten via cron eller n\u00e5r konfigurationen \u00e6ndres i git.<\/p>\n<p>Den anden del er mere interessant \u2013 nogen skal holde \u00f8je med disse backups. I nogle tilf\u00e6lde skal denne person g\u00e5 tilbage og gendanne alt som det var, mens de i andre tilf\u00e6lde skal meow til nogen om, at der er problemer. <br \/>\nFor eksempel, hvis der er kommet en ny bruger, som ikke er angivet i variablerne, b\u00f8r man fjerne dem langt v\u00e6k fra hack. Og hvis der er en ny firewallregel \u2013 bedre ikke at r\u00f8re ved den, m\u00e5ske har nogen bare aktiveret debugging, eller m\u00e5ske har den nye, klodsede service ikke registreret det korrekt, og nu er der allerede brugere, der er g\u00e5et ind.<\/p>\n<p>P\u00e5 trods af enhver automatisering og en st\u00e5lfast ledelse, vil vi ikke undslippe en lille delta i skalaen af hele netv\u00e6rket. Ingen vil \u00e6ndre konfigurationen i systemerne for at debugge problemer. Desuden er det muligt, at konfigurationsmodellen slet ikke forudser dem. <\/p>\n<blockquote><p>For eksempel, en firewallregel til at t\u00e6lle antallet af pakker til en bestemt IP for at lokalisere problemer \u2013 det er helt almindelig midlertidig konfiguration.\n<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/390f78139d336f1fc2c60573bccfe76c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Komponent 10. Overv\u00e5gningssystem<\/h2>\n<p>\nF\u00f8rst havde jeg ikke t\u00e6nkt mig at belyse emnet overv\u00e5gning \u2013 det er jo en omfattende, kontroversiel og kompleks sag. Men i takt med forl\u00f8bet af begivenhederne viste det sig, at det er en uundg\u00e5elig del af automatiseringen. Og man kan ikke omg\u00e5 det, selv uden praktisk erfaring. <\/p>\n<p>N\u00e5r man videref\u00f8rer tanken \u2013 dette er en organisk del af CI\/CD-processen. Efter udrulningen af konfigurationen til netv\u00e6rket, skal vi kunne afg\u00f8re, om alt nu er i orden med det. <br \/>\nOg det handler ikke kun og slet ikke kun om grafik af interfacebrug eller tilg\u00e6ngelighed af noder, men ogs\u00e5 om de mere subtile ting \u2013 tilstedev\u00e6relsen af de n\u00f8dvendige ruter, attributter p\u00e5 dem, antallet af BGP-sessioner, OSPF-naboer, End-to-End-funktionalitet af overordnede services.<br \/>\nEr systemloggene stoppet med at blive sendt til den eksterne server, eller er SFlow-agenten brudt ned, eller er der begyndt at opst\u00e5 drops i k\u00f8erne, eller er forbindelsen mellem et eller andet par af pr\u00e6fikser blevet brudt?<\/p>\n<p>I en separat artikel vil vi reflektere over dette ogs\u00e5.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/08aeee4939081abb21e61abadd0ce5de.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"Automatisering for de mindste. Del nul. Planl\u00e6gning\" src=\"\/wp-content\/uploads\/2019\/07\/13c186070c85fd00f7b6923df154f1b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h1>Konklusion<\/h1>\n<p>\nSom grundlag har jeg valgt et af de moderne datacenterdesigns - L3 Clos Fabric med BGP som routingprotokol.<br \/>\nDenne gang bygger vi netv\u00e6rket p\u00e5 Juniper, fordi JunOs-gr\u00e6nsefladen nu er en joyride.<\/p>\n<p>Vi vil g\u00f8re det lidt mere kompliceret ved kun at bruge Open Source v\u00e6rkt\u00f8jer og et multivendor-netv\u00e6rk - s\u00e5 jeg vil p\u00e5 vejen v\u00e6lge endnu en heldig vinder udover Juniper.<\/p>\n<p>Planen for de kommende publikationer ser omtrent s\u00e5dan ud:<br \/>\nF\u00f8rst vil jeg tale om virtuelle netv\u00e6rk. F\u00f8rst og fremmest, fordi jeg har lyst til det, og for det andet, fordi uden det vil designet af infrastruktur-netv\u00e6rket ikke v\u00e6re s\u00e6rlig klart.<br \/>\nDerefter om netv\u00e6rksdesign: topologi, routing, politikker.<br \/>\nVi vil samle et laboratorieopstilling.<br \/>\nVi vil reflektere og m\u00e5ske \u00f8ve os i at initialisere en enhed i netv\u00e6rket.<br \/>\nOg derefter om hver komponent i intime detaljer.<\/p>\n<p>Og ja, jeg lover ikke at afslutte denne cyklus med en elegant l\u00f8sning. \ud83d\ude42<\/p>\n<h5>Nyttige links<\/h5>\n<p><\/p>\n<ul>\n<li>F\u00f8r vi dykker ned i serien, er det v\u00e6rd at l\u00e6se bogen af Natasha Samoylenko <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.gitbook.io\/pyneng\/\">Python til netv\u00e6rksingeni\u00f8rer<\/a><\/noindex>. M\u00e5ske ogs\u00e5 tage <noindex><a rel=\"nofollow\" href=\"https:\/\/natenka.github.io\/pyneng-online\/\">kurset<\/a><\/noindex>.<\/li>\n<li>Det vil ogs\u00e5 v\u00e6re nyttigt at l\u00e6se <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc7938\">RFC<\/a><\/noindex> om design af datacenterfabrikker fra Facebook skrevet af Peter Lapukhov.<\/li>\n<li>Dokumentationen om arkitekturen giver dig et indblik i, hvordan Overlay-baseret SDN fungerer. <noindex><a rel=\"nofollow\" href=\"https:\/\/tungstenfabric.github.io\/website\/Tungsten-Fabric-Architecture.html\">Tungsten Fabric<\/a><\/noindex> (tidligere Open Contrail) vil give dig en forst\u00e5else af, hvordan Overlay SDN fungerer.<\/li>\n<\/ul>\n<h5>Tak<\/h5>\n<p>\nRoman Gorge. For kommentarer og rettelser.<br \/>\nArtem Chernobai. For KDPV.<br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 for de allermindste. Del nul. Planl\u00e6gning | ProHoster","description":"SDCM er slut, men den ukontrollerede trang til at skrive er stadig tilbage.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/avtomatizatsiya-dlya-samyh-malenkih-chast-nulevaya-planirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/35972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=35972"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/35972\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/26891"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=35972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=35972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=35972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}