Denna artikel Àr den sjÀtte i serien "Hur man tar kontroll över nÀtverksinfrastrukturen". InnehÄllet för hela serien och lÀnkar kan hittas .
Efter att ha lÀmnat nÄgra Àmnen bakom mig bestÀmde jag mig för att ÀndÄ börja ett nytt kapitel.
Jag Äterkommer till sÀkerheten lite senare. HÀr vill jag diskutera en enkel men effektiv strategi som, jag Àr sÀker pÄ, pÄ ett eller annat sÀtt, kan vara till nytta för mÄnga. Det handlar mer om en kort berÀttelse om hur automatisering kan förÀndra livet för en ingenjör. Fokus ligger pÄ anvÀndningen av mallar. I slutet finns en lista över mina projekt dÀr man kan se hur allt som beskrivs hÀr fungerar.
DevOps för nÀtverk
Att skapa konfigurationer med skript, anvĂ€nda GIT för att kontrollera Ă€ndringar i IT-infrastrukturen, fjĂ€rruppladdning â dessa idĂ©er dyker först upp nĂ€r man tĂ€nker pĂ„ den tekniska implementeringen av DevOps. Fördelarna Ă€r uppenbara. Men tyvĂ€rr finns det ocksĂ„ nackdelar.
NÀr vÄra utvecklare kom till oss, nÀtverksteknikerna, med dessa förslag för mer Àn 5 Är sedan, var vi inte sÀrskilt entusiastiska.
Det Àr vÀrt att nÀmna att vi Àrvde ett ganska brokigt nÀtverk, bestÄende av utrustning frÄn drygt 10 olika leverantörer. Vissa saker var lÀtta att konfigurera via vÄr favorit CLI, men pÄ andra platser föredrog vi att anvÀnda GUI. Dessutom hade den lÄnga tiden vi arbetade med 'live' utrustning gett oss vana vid realtidsövervakning. Jag, till exempel, kÀnner mig mycket mer bekvÀm nÀr jag gör Àndringar direkt via CLI. SÄ kan jag snabbt mÀrka att nÄgot gick fel och "ÄterstÀlla" Àndringarna. Allt detta stod i viss konflikt med deras idéer.
Och andra frÄgor dyker upp, till exempel kan grÀnssnittet för mjukvaran förÀndras nÄgot mellan versioner. Det kan i slutÀndan leda till att ditt skript skapar en felaktig "konfig". Man vill inte anvÀnda produktionen för "testarbeten".
Eller hur vet man att konfigurationskommandona har tillÀmpats korrekt och vad man ska göra om det uppstÄr ett fel?
Jag vill inte sÀga att alla dessa frÄgor Àr olösliga. Men att sÀga "A" innebÀr nog att det ocksÄ Àr rimligt att sÀga "B", och om man vill anvÀnda samma processer för Àndringskontroll som i utvecklingen, sÄ behöver man dessutom ha dev- och staging-miljöer förutom produktion. DÄ framstÄr denna strategi som komplett. Men vad kommer det att kosta?
Men det finns en situation dÀr nackdelarna nÀstan upphÀvs och bara fördelarna kvarstÄr. Jag pratar om projektarbeten.
Projektet
Under de senaste tvÄ Ären har jag deltagit i ett projekt för att bygga ett datacenter för en stor leverantör. Jag ansvarar för F5 och Palo Alto i detta projekt. Ur Cisco-perspektiv Àr det "3rd party equipment".
För mig finns det tvÄ tydligt definierade faser i detta projekt.
Den första fasen
Under det första Äret var jag konstant upptagen, jag jobbade pÄ nights och helger. Jag kunde knappt lyfta huvudet. Trycket frÄn ledningen och kunden var starkt och kontinuerligt. I den stÀndiga rutinen kunde jag inte ens försöka optimera processen. Det handlade inte bara om att konfigurera hÄrdvara, utan Àven om att skapa projekt dokumentation.
DÄ började de första testerna, och jag var förbluffad över hur mÄnga smÄ misstag och felaktigheter som hade begÄtts. SjÀlvklart fungerade allt, men hÀr saknades en bokstav i namnet, dÀr saknades en rad i kommandot... Tester fortsatte och fortsatte, och jag befann mig i en stÀndig, daglig kamp mot fel, tester och dokumentation.
SÄ hÀr fortsatte det i ett Är. Projektet var, sÄvitt jag förstÄr, inte enkelt för nÄgon, men gradvis blev kunden mer och mer nöjd, vilket gjorde det möjligt att ta in fler ingenjörer som kunde ta över en del av rutinen.
Nu kunde jag se mig omkring lite.
Och detta var början pÄ den andra fasen.
Den andra fasen
Jag beslutade mig för att automatisera processen.
Vad jag insÄg frÄn kommunikationen med utvecklarna dÄ (och man ska ge kredit, vi hade ett starkt team) Àr att textformatet, Àven om det vid första anblick verkar vara nÄgot frÄn DOS-operativsystemet, faktiskt har en rad vÀrdefulla egenskaper.
Till exempel skulle textformatet vara anvÀndbart om du vill utnyttja fördelarna med GIT och alla dess avlÀggningar. Och det ville jag.
Det verkar som om man skulle kunna lagra konfigurationen eller listan över kommandon, men att göra Àndringar pÄ det sÀttet Àr ganska besvÀrligt. Dessutom finns det en annan viktig uppgift nÀr man designar. Du mÄste ha dokumentation som beskriver din övergripande design (Low Level Design) och specifik implementation (Network Implementation Plan). Och i detta fall verkar anvÀndningen av mallar vara ett mycket lÀmpligt alternativ.
SÄ, nÀr man anvÀnder YAML och Jinja2, fungerar YAML-filen med konfigurationsparametrar, som IP-adresser, BGP AS-nummer, ⊠utmÀrkt som NIP, medan Jinja2-mallar inkluderar syntaxen som motsvarar designen, vilket i stort sett Àr en spegling av LLD.
Det tog tvÄ dagar att lÀra sig sprÄken YAML och Jinja2. För att förstÄ hur det fungerar rÀcker det med nÄgra bra exempel. DÀrefter tog det cirka tvÄ veckor att skapa alla mallar som motsvarar vÄr design: en vecka för Palo Alto och ytterligare en vecka för F5. Allt detta lades ut pÄ företagets GitHub.
Nu sÄg förÀndringsprocessen ut pÄ följande sÀtt:
- Àndrade YAML-filen
- skapade en konfigurationsfil med hjÀlp av mallen (Jinja2)
- sparade i det fjÀrrlagrade arkivet
- laddade upp den skapade konfigurationen pÄ utrustningen
- sÄg ett fel
- Àndrade YAML-filen eller Jinja2-mallen
- skapade en konfigurationsfil med hjÀlp av mallen (Jinja2)
- âŠ
Det Àr klart att mycket tid gick Ät till Àndringar i början, men efter en vecka eller tvÄ blev det snarare en sÀllsynthet.
En bra kontroll och möjlighet att felsöka blev kundens önskan att Àndra namnsÀttningen. De som har arbetat med F5 förstÄr situationens kÀnslighet. Men för mig var allt ganska enkelt. Jag Àndrade namnen i YAML-filen, raderade all konfiguration frÄn utrustningen, genererade en ny och laddade upp. Totalt tog det fyra dagar, med hÀnsyn till buggfixar: tvÄ dagar för varje teknologi. DÀrefter var jag redo för nÀsta steg, nÀmligen att skapa DEV- och Staging-datacenter.
Dev och Staging
Staging Ă„terspeglar i stort sett produktionen fullt ut. Dev Ă€r en kraftigt nedskuren kopia som frĂ€mst bygger pĂ„ virtuell utrustning. En perfekt situation för att tillĂ€mpa det nya tillvĂ€gagĂ„ngssĂ€ttet. Om man ser pĂ„ den tid jag spenderade pĂ„ hela processen, tror jag att arbete inte tog mer Ă€n tvĂ„ veckor. Den största delen av tiden var vĂ€ntan pĂ„ den andra sidan och gemensamma sökande efter problem. Implementeringen av 3rd party passerade nĂ€stan obemĂ€rkt för omgivningen. Det fanns till och med tid att lĂ€ra sig nĂ„got nytt och skriva ett par artiklar pĂ„ Habr đ
Sammanfattningsvis
SĂ„, vad har jag kvar i det korta?
- allt jag behöver för att Ă€ndra konfigurationen â Ă€r att Ă€ndra en enkel, tydligt strukturerad YAML-fil med konfigurationsparametrar. Jag Ă€ndrar aldrig python-skript och mycket sĂ€llan (bara om det finns ett fel) Ă€ndrar jag Jinja2-mallen.
- ur dokumentation förefaller nÀstan perfekt. Du Àndrar dokumentationen (YAML-filer fungerar som NIP) och laddar upp denna konfiguration pÄ utrustningen. PÄ sÄ sÀtt Àr din dokumentation alltid aktuell.
Allt detta har lett till att
- felet har minskat nÀstan till 0
- 90 procent av rutinarbetet har försvunnit
- implementeringshastigheten har ökat flera gÄnger
PAY, F5Y, ACY
Jag sa att nÄgra exempel Àr tillrÀckliga för att förstÄ hur det fungerar.
HÀr Àr en kort (och förstÄs omarbetad) version av vad som skapades under mitt arbete.
= deployment Palo Alto frÄn Yaml = Palo Alto frÄn Yaml
= deployment F5 frÄn Yaml = F5 frÄn Yaml (snart kommer det)
= deployment ACi frÄn Yaml = F5 frÄn Yaml
Jag lÀgger till nÄgra ord om ACY (förvÀxla inte med ACI).
De som har arbetat med ACI vet att detta underverk (och i goda avseenden ocksĂ„) skapades definitivt inte av nĂ€tverksingenjörer :). Glöm allt du visste om nĂ€tverk â det kommer inte att vara till hjĂ€lp!
Lite överdrivet, men det fÄngar ungefÀr den kÀnsla jag stÀndigt, i nu tre Är, har upplevt nÀr jag arbetar med ACI.
I det hÀr fallet Àr ACY inte bara en möjlighet att styra förÀndringsprocessen (vilket Àr sÀrskilt viktigt i fallet med ACI, eftersom det antas vara den centrala och mest kritiska delen av ditt datacenter), men det ger dig ocksÄ ett anvÀndarvÀnligt grÀnssnitt för att skapa konfigurationer.
Ingengörerna i detta projekt anvÀnder Excel istÀllet för YAML för att konfigurera ACI för samma syften. AnvÀndningen av Excel har förstÄs sina fördelar:
- din NIP i en fil
- vackra tabeller som Àr trevliga att se pÄ för kunden
- du kan anvÀnda vissa verktyg i Excel
Men det finns en nackdel, och jag anser att den vÀger tyngre Àn fördelarna. Att kontrollera förÀndringar och koordinera teamets arbete blir mycket svÄrare.
ACY Àr faktiskt tillÀmpningen av samma metoder som jag anvÀnde för 3rd party, för att konfigurera ACI.
KĂ€lla: habr.com
