Automatyzacja konfiguracji urządzeń sieciowych na bazie playbooków Ansible
Ręczna konfiguracja sieci oraz realizacja powtarzalnych zgłoszeń zajmowała dwuosobowemu działowi IT wiele godzin. Automatyzacja konfiguracji urządzeń, a konkretnie stworzenie narzędzia do obsługi tych zadań pozwoliło na uproszczenie części pracy i przeniesienie jej do działu Help Desk. Teraz nie potrzeba inżyniera sieci, żeby podłączyć drukarkę na odpowiednim porcie switcha lub szybko odszukać w sieci pożądane urządzenie. Wykwalifikowani inżynierowie zyskali czas na rozwiązywanie zaawansowanych problemów.
Automatyzacja konfiguracji z architekturą opartą o Ansible w naturalny sposób dzieli złożoną automatyzację na mniejsze i bardziej zrozumiale zadania.
Budowa kolejnych modułów pozwoli klientowi szybko adaptować się do zmieniających się wyzwań i sprostać dodatkowym oczekiwaniom.
Jacek Ozga, Senior Automation Engineer, Grandmetric
Klient
Usługi
Technologie
5-krotny wzrost szybkości rozwiązania pojedynczego zgłoszenia
Automatyzacja konfiguracji i przekazanie prostych zadań do Help Desku (np. podłączenie drukarki na wolnym porcie, sprawdzenie statusu portów na urządzeniu)
Inwentaryzacja sieci z jednego miejsca i ułatwione zarządzania
Możliwość rozbudowy narzędzia o kolejne funkcjonalności, np. automatyczne rysowanie diagramów sieciowych
Producent kruszywa posiadający fabryki w całej Polsce miał problem z zarządzaniem siecią w skali całej firmy. Brak odpowiedniej widoczności wolnych portów na urządzeniach czy konieczność konfiguracji z poziomu linii komend sprawiały, że nawet proste i powtarzalne zadania jak włączenie/wyłączenie portu były przekazywane do działu IT. Ponadto po zgłoszeniu problemu z urządzeniem inżynier musiał ręcznie przeszukiwać bazę urządzeń sieciowych w poszukiwaniu problemu, co przy skali przedsiębiorstwa okazywało się nie lada wyzwaniem.
Odpowiedzią na narastające niezadowolenie działu IT oraz potrzebę skalowania zarządzania siecią było narzędzie (aplikacja), które zautomatyzuje konfiguracje urządzeń i pozwoli wykonywać proste zlecenia osobom, które nie są inżynierami sieci.
Podstawowe funkcjonalności budowanej aplikacji:
Po spotkaniu z klientem zrozumieliśmy, że brak działania spowoduje nie tylko trudności w zarządzaniu siecią, ale nasili rosnące już niezadowolenie obciążonych pracowników działu IT.
Dlatego nadrzędnym celem projektu było zaprojektowanie systemu tak, żeby dział IT mógł wgrać konfigurację raz, a dział HelpDesk mógł ją uruchamiać na wielu urządzeniach. Takie podejście eliminowało konieczność korzystania z linii komend, znajomość komend konfiguracyjnych i zapewniało skalowanie.
Na tym etapie powstała koncepcja aplikacji oraz jej wstępny szkic (makieta). Poniżej przedstawiamy kilka wybranych ekranów z makiety.
Po uzyskaniu zielonego światła od klienta i ustaleniu priorytetów, przeszliśmy do szczegółowego planowania aplikacji. Tu bardzo nam pomógł fakt, że projektowanie i automatyzacja sieci klasy enterprise to zagadnienia, którymi zajmujemy się na co dzień. Bez wahania włączyliśmy naszych inżynierów sieci w etap projektowania.
Dzięki temu mieliśmy pewność, że mechanizmy działania aplikacji będą zgodne z dobrymi praktykami sieciowymi, a zespół programistów będzie rozumiał sposób, w jaki klient będzie korzystał ze stworzonego narzędzia.
Na tym etapie powstały:
Zależało nam, żeby klient mógł jak najszybciej korzystać z pierwszych funkcjonalności konfiguracji sieci, dlatego podeszliśmy do programowania w sposób iteracyjny. Rozpoczęliśmy od budowy funkcjonalności o najwyższym priorytecie, a następnie cyklicznie spotykaliśmy się z klientem, żeby zademonstrować mu działanie kolejnych modułów aplikacji.
Nieodłącznym elementem naszej pracy było też testowanie narzędzia w laboratorium sieciowym Grandmetric oraz na naszej infrastrukturze.
Na tym etapie powstały:
Od strony architektury projekt składa się z trzech warstw:
Poniżej przedstawiamy zrzuty kilku przykładowych ekranów z powstałej aplikacji.
Praca nad projektem nie kończy się dla nas po przekazaniu aplikacji. Na etapie uruchomienia świadczymy intensywny support i pomagamy użytkownikom po stronie klienta korzystać ze stworzonego narzędzia.
Aplikacja automatyzująca konfiguracje będzie dalej rozwijana przez nas zespół, co da klientowi dostęp do kolejnych funkcjonalności oraz regularnych aktualizacji systemu.
Automatyzacja konfiguracji sieci i infrastruktury IT jest często pierwszym krokiem do transformacji cyfrowej w działach sieciowych. Często spotykamy się z chęcią automatyzowania wszystkiego od razu. To kusząca, ale nieefektywna perspektywa.
Nie ma sensu zarządzać w sposób zautomatyzowany pojedynczym przełącznikiem czy routerem, ale jest sens automatyzować zarządzanie kilkudziesięcioma.
Wybór odpowiednich obszarów do automatyzacji wymaga dokładnej analizy możliwości, kosztów i opłacalności inwestycji.
W klienckich projektach automatyzacji konfiguracji sieci mamy do czynienia z interesariuszami zarówno po stronie klienta (biznes i inżynierowie sieci), jak i po naszej stronie (zespoły deweloperski i Advanced Services). Sporym wyzwaniem może być pogodzenie dobrych praktyk w dziedzinie projektowania sieci z dobrym praktykami deweloperów. Pogodzenie różnych perspektyw widzenia jest jednak niezbędne do wypracowania wysokiej jakości rozwiązania.
Naszym podstawowym narzędziem automatyzacji były skrypty (playbooki) Ansible. Uruchamianie ich w środowiskach wirtualnych opartych na kontenerach Docker pozwoliło na izolację między kontenerami, łatwość skalowania i prostotę wdrożenia.
Na tę ostatnią miało również wpływ zastosowanie pipeline’u CI/CD, dzięki któremu zautomatyzowaliśmy wgrywanie najnowszych wersji oprogramowania na nasze środowisko bezpośrednio po zatwierdzeniu zmian w repozytorium przez dewelopera.
Im bardziej złożony projekt, tym więcej testów potrzeba, żeby przekonać się, czy wszystko działa jak należy. Regularne spotkania zespołu deweloperskiego z inżynierami Advanced Services i przedstawicielami klienta pozwoliły na bieżąco weryfikować założenia projektowe i wprowadzać niezbędne usprawnienia. Ponadto mechanizmy automatycznego testowania pozwoliły na utrzymanie wysokiej jakości kodu, kontrolę konwencji nazewnictwa czy sprawne tworzenie dokumentacji.
Akcje wykonywane za pomocą aplikacji są kilkukrotnie szybsze niż konfiguracja wielu urządzeń ręcznie, a dodatkowo pozwalają uniknąć błędów podczas ręcznej konfiguracji.
Mateusz Buczkowski
Lider zespołu Software Development, Grandmetric