Automatisering is niet voor luie mensen. Nu hoor ik je denken: ‘Hoezo? Netwerkautomatisering is toch bedoeld om het leven eenvoudiger te maken?’ Dat klopt! Toch is het nog een hele uitdaging om automatisering van de grond te krijgen. Zomaar even besluiten ‘We gaan vandaag netwerkautomatisering over de hele linie implementeren’ is slechts een droomscenario.
Het is noodzaak om eerst zorgvuldig na te denken over de manier waarop je als organisatie wilt automatiseren. Er bestaat geen one-size-fitsall oplossing noch is er sprake van best practices, die op elke situatie van toepassing zijn. Wel bestaan er gemeenschappelijke principes en cruciale beslissingspunten die een rol spelen bij álle automatiseringsinspanningen. Deze blog geeft aan de hand van vijf tips en trucs meer inzicht in die inspanningen, die eventuele twijfels over (verdere) netwerkautomatisering wegnemen.
1. Maak een keuze tussen flexibiliteit of eenvoud
Als je een netwerk wilt automatiseren, moet je het netwerk als een code behandelen. Je programmeert namelijk letterlijk het netwerk. Dat kan door voor meer flexibiliteit te kiezen, waarbij je minder als een netwerkingenieur denkt en meer als programmeur. Maar het kan ook op een eenvoudige manier, door bestaande Command-Line-Interface (CLI)-opdrachten met enkele aanpassingen te porteren in de infrastructuur voor netwerkautomatisering.
Eenvoud
Zo kan bijvoorbeeld met Ansible, een tool die repeterend werk in een IT-omgeving automatiseert, een voorgaande configuratie voor declaratieve code worden geporteerd. Het is het simpel kopiëren en plakken van code. Niet meer en niet minder. Bovendien verbetert door deze methode de stabiliteit door voorspelbare (en werkende) netwerkconfiguraties te handhaven. Als iemand bijvoorbeeld ad hoc een wijziging op een switch aanbrengt, waardoor onverhoopt het netwerk uitvalt, is het doorgaans gecompliceerd om te bepalen wat en waar er iets veranderd is. Maar met netwerkautomatisering kan alles eenvoudig en veilig worden teruggezet met één druk op de knop. In de praktijk zien we ook vaak dat in de wat kleinere netwerkomgevingen een niet-specialistische netwerkmedewerker de code moet analyseren om een diagnose te stellen. Eenvoudige code maakt het voor deze medewerkers eenvoudiger om te begrijpen wat er aan de hand is.
Flexibiliteit
Grotere omgevingen daarentegen beschikken vaak over een fulltime netwerkteam. Hier zou de keuze voor flexibiliteit beter op zijn plaats zijn. De aanpak voor netwerkautomatisering is in dit geval ingewikkelder, aangezien bij deze benadering de logica van een code van de gegevens wordt gescheiden van de data, die uniek is voor elk afzonderlijk apparaat. Ongeacht het platform verbreek je de code over meerdere bestanden. Eén bestand bevat een lijst met (gegroepeerde) apparaten, een ander bestand bevat variabelen die uniek zijn per apparaat of apparaatgroepen (zoals IP-adressen, ASN’s en SNMP-instellingen) en weer een ander bestand bevat de logica en de configuratie richtlijnen. In tegenstelling tot een traditionele CLI-configuratie, die repetitieve opdrachten kan bevatten, kan dit bestand iteratieve (herhalende) logica bevatten om meerdere keren door een sectie code te bladeren. Het maakt het misschien minder duidelijk wat de code precies doet, maar het is wel veel schaalbaarder.
Flexibiliteit en eenvoud mixen is overigens geen goed idee bij netwerkautomatisering. Het gemak van code kopiëren, plakken in combinatie met krachtige programmeerlogica geeft je dan misschien het beste van beide werelden, het geeft je ook het slechtste. Kiezen voor een gecombineerde aanpak maakt het moeilijker en ingewikkelder om te begrijpen hoe een automatiseringsplatform de apparaten configureert. Het is vragen om moeilijkheden.
2. Pas automatisering toe op alle netwerkapparaten
Bijna ieder netwerk beschikt wel over een apparaat, dat is voorzien van een ad-hoc of eenmalige configuratie. In plaats van deze te elimineren is het beter deze apparaten onderdeel te maken van de automatiseringsoplossing. Goed om daarbij in gedachten te houden: ‘als iets niet in de automatiseringscode staat, het ook niet bestaat in de actieve configuratie’. Het doel is dan ook om alle netwerkapparaten onder de paraplu van net-werkautomatisering te scharen en voor eens en altijd afscheid te nemen van handmatige configuraties. Het lijkt misschien verspilde moeite om een enkele statement op een individueel apparaat te automatiseren, maar dat is het niet. Want je zult maar eens in een situatie terechtkomen, waarin het geautomatiseerde platform het individuele apparaat heeft overschreven of het individuele apparaat voor een conflict zorgt met een nieuwe configuratie, die automatisch is uitgerold. Gevolg? Een netwerk dat er (deels) uit ligt met alle gevolgen van dien.
3. Gebruik één automatiseringsplatform
Voor netwerkautomatisering móet je infrastructuur als code behandelen en kiezen voor één automatiseringsplatform. Ook bestaande automatiseringsplatformen hebben ooit gekozen voor een programmeertaal. Zo maakt het eerder genoemde Ansible gebruik van ‘Python’, terwijl Puppet en Chef op hun beurt de programmeertaal ‘Ruby’ gebruiken. Het maakt niet uit welke taal gebruikt wordt, zolang alle gebruikers maar instemmen met een en dezelfde gemeenschappelijke programmeertaal waar ze graag mee (zouden) werken. Een taal kun je leren, dus niet iedereen hoeft er meteen mee bekend te zijn.
4. Maak gebruik van versiebeheer
Het is raadzaam om alle apparaatconfiguraties binnen de netwerkautomatisering met behulp van een versiebeheersysteem in een centrale opslagplaats te bewaren. Denk dan bijvoorbeeld aan een softwarebroncode-managementproject, zoals Git. De centrale opslagplaats wordt op die manier de gezaghebbende bron voor iedere configuratie. Ook zorgt versiebeheer ervoor dat aanpassingen eenvoudig en geheel automatisch teruggedraaid kunnen worden, inclusief het informeren over de gedane aanpassingen. De sleutel tot het succes van effectief versiebeheer is dan ook om alle aanpassingen te traceren, zelfs de allerkleinste. In het geval van een traag netwerk kan versiebeheer informatie ver-schaffen over welke aanpassingen nog niet zijn doorgevoerd.
5. Valideer en bewaak het netwerk met NetQ
Wat versiebeheer alleen niet kan aantonen, is de status van het netwerk. NetQ kan daarentegen wel iets betekenen, gezien NetQ wijzigingen in de status van het netwerk bij-houdt. Dat in tegenstelling tot versiebeheer, dat weer de focus legt op wijzigingen in de configuratie van het netwerk. NetQ weet precies wanneer en wat er veranderd is in de status van het netwerk. Dat geldt overigens ook in het geval van een gedeeltelijk geautomatiseerd netwerk, wat meteen ook de blinde vlek elimineert die door gedeeltelijke net-werkautomatisering is achtergelaten.
Het mag duidelijk zijn. Netwerkautomatisering is een handmatig proces, dat de nodige zorgvuldigheid en planning vereist. Door deze vijf tips toe te passen krijg je uiteindelijk een stabieler en voorspelbaar netwerk, mits je alles correct uitvoert. Denk hierbij aan de keuzemogelijkheid voor meer flexibiliteit of juist een eenvoudige aanpak, door alle apparaten onderdeel maken van de automatiseringsoplossing en te kiezen voor één automatiseringsplatform. Maak het jezelf bovendien gemakkelijk door gebruik te maken van een versiebeheersysteem, die je vervolgens in een centrale opslagplaats bewaart en valideer en bewaak het netwerk met NetQ. Zo weet je altijd precies wat er gaande is in het net-werk. En laten we eerlijk zijn. Iedereen wil toch het liefst zoveel mogelijk apparaten geautomatiseerd hebben, zodat er meer tijd overblijft voor belangrijke, innovatieve dingen?