Jednym z największych wyzwań działów IT jest obecnie zarządzanie dużymi i zróżnicowanymi środowiskami. Oprócz administrowania istniejącymi usługami tak, aby zagwarantować wysoką dostępność, integralność oraz bezpieczeństwo danych, pojawia się potrzeba szybkiego dostarczania nowych usług. Wraz z rozrostem środowiska informatycznego wzrasta liczba codziennych rutynowych czynności operacyjnych oraz takich, które trudno przewidzieć. Wszystko to sprawia, że stare podejście, zakładające ręczne wykonywanie operacji na systemach, staje się coraz bardziej kosztowne i coraz mniej efektywne. Na pomoc przychodzi automatyzacja procesów IT.
Automatyzacja w IT
Automatyzacja IT, często określana jako automatyzacja infrastruktury, to użycie odpowiedniego oprogramowania do obsługi powtarzalnych czynności, aby zredukować ilość manualnej pracy administratorów IT. Automatyzacja jest kluczowym aspektem w optymalizacji procesów oraz cyfrowej transformacji firm. Rozwijający się trend spowodował powstanie wielu konkurencyjnych narzędzi służących do ułatwienia i przyspieszania działania organizacji z szeroko rozumianego rynku nowych technologii.
Mnogość wykorzystywanych w firmach rozwiązań IT powoduje potrzebę zastosowania nowego podejścia. Zamiast wykonywać dzień w dzień te same czynności administracyjne, łatwiej jest przygotować scenariusz, który będzie uruchamiany zgodnie z harmonogramem lub w przypadku wystąpienia konkretnego zdarzenia, np. niedostępności wykrytej przez system monitoringu.
Kluczowym kryterium jakości administracji infrastrukturą IT jest dostępność usług dostarczanych klientowi. Automatyzacja czynności administracyjnych z wykorzystaniem dedykowanych narzędzi pozwala znacznie skrócić czas reakcji na zdarzenie w porównaniu z interwencją człowieka.
Także firmy dostawcy systemów IT i oprogramowania potrzebują szybkiego i niezawodnego sposobu na wdrażanie oraz testowanie swoich nowych produktów. Zespoły operacyjne muszą ściśle współpracować z zespołami programistów, aby cały proces dostarczania oprogramowania odbywał się bez niepotrzebnych błędów. Również tu przydają się narzędzia automatyzujące.
Ansible w administracji IT
W SNP Poland (aktualnie All for One Poland) zdecydowaliśmy się na wykorzystanie narzędzia Ansible, dostarczanego przez firmę Red Hat. Jest to oprogramowanie udostępniane w modelu open source, co sprawia, że oprócz zaawansowanych funkcji daje możliwość dostosowania go do biznesowych potrzeb klienta. Szeroka społeczność zaangażowana w tworzenie i rozwój Ansible pozwala na utrzymanie najwyższych standardów oraz jego ciągły rozwój.
Oprogramowanie oparte jest na prostym założeniu, że do zarządzania całym środowiskiem wystarczy jeden serwer pełniący rolę zarządcy. Specjalnie na te potrzeby społeczność przygotowała produkt AWX, który dodatkowo pozwala na tworzenie i zarządzanie projektami zadań automatyzujących. Wartością dodaną tego rozwiązania jest możliwość ustalania harmonogramów oraz audytu wykonanych zadań. Całość sprawia, że wdrożenie oraz rozwijanie systemu automatyzacji IT oszczędza czas zespołów operacyjnych oraz zmniejsza liczbę popełnianych błędów.
Architektura rozwiązania
Ansible w założeniu miał być prosty i taki właśnie jest. Całe rozwiązanie jest stworzone w języku Python, co znacznie ułatwia administratorom zrozumienie sposobu jego działania. Aby zarządzać danym systemem, wystarczy połączenie sieciowe i użycie podstawowych protokołów połączeniowych. Inaczej niż w konkurencyjnych rozwiązaniach, niepotrzebne jest instalowanie dodatkowego oprogramowania, zwanego agentem. Cały ruch między systemem zarządzającym i zarządzanym jest szyfrowany, co zapewnia bezpieczeństwo całego procesu.
Ansible jest zbudowany z czterech podstawowych części: playbooków, modułów, plików inventory oraz pluginów. Playbooki są plikami tekstowymi, które pełnią rolę pewnego rodzaju scenariusza. Natomiast pliki inventory zawierają grupy systemów, na których dany scenariusz ma się wykonać. Tworzenie playbooka wymaga jedynie znajomości prostego pseudojęzyka o nazwie YAML. Wyżej wymienione cechy dają możliwość łatwego wersjonowania oraz utrzymywania całego kodu. Często stworzenie skryptu zajmuje tyle samo czasu, co wykonanie opisanych w nim czynności ręcznie. Całość sprawia, że zarządzanie konfiguracją, utrzymywanie infrastruktury oraz wdrażanie nowych rozwiązań wymaga znacznie mniej czasu i zasobów.
Przykłady użycia
W celu zilustrowania możliwości Ansible, przedstawiamy kilka typowych przykładów, jak wykorzystujemy rozwiązanie w SNP Poland, zarządzając systemami własnymi oraz klientów korzystających z usług All for One Data Centers.
Aby utrzymać stabilność i bezpieczeństwo usług, administrator cyklicznie wgrywa poprawki systemu operacyjnego. Do tego celu użyliśmy Ansible. Pierwszym krokiem jest automatyczne tworzenie migawki oraz oznaczenie aktualizowanej usługi w systemie monitoringu jako „w trakcie aktualizacji”, tak aby nie zostały wysłane fałszywe powiadomienia o niezaplanowanej niedostępności systemu. W następnym kroku Ansible upewnia się, czy powyższe kroki zostały wykonane poprawnie, i przechodzi do aktualizacji systemu. Wszystko odbywa się współbieżnie, co jeszcze bardziej skraca całą procedurę. Po przeprowadzonym procesie administrator jest informowany o pomyślnej aktualizacji. Pozwala to na automatyczną aktualizację więcej niż jednego systemu na raz, bez potrzeby fizycznego logowania.
Czasami powstaje potrzeba doinstalowania oprogramowania na wszystkich systemach w środowisku. Tak było w przypadku wdrożenia centralnego systemu agregacji logów. Ręczna instalacja agenta na każdym z klientów zajęłaby kilka dni. W przypadku wykorzystania Ansible wystarczyło napisanie playbooka oraz uruchomienie go z poziomu AWX. Po chwili oprogramowanie z odpowiednią konfiguracją zaczęło działać na systemach. W kilku przypadkach niepowodzenia zostaliśmy poinformowani, co i gdzie poszło nie tak, i tylko tam trzeba było wymagane operacje wykonać ręcznie.
Rozbudowana infrastruktura IT wymaga rozwiązań do zarządzania tożsamością, pozwalających na udzielanie dostępu do systemów i aplikacji tym użytkownikom, którzy powinni go mieć. To zadanie również zostało zautomatyzowane poprzez przygotowanie odpowiedniego scenariusza, który na nowo powstałym systemie instaluje i konfiguruje potrzebne pakiety, a także integruje z serwerem zarządzającym dostępami.
Automatyzacja oszczędza czas i pieniądze
Automatyzacja infrastruktury IT – szczególnie w rozbudowanych, wielosystemowych instalacjach obsługujących wielu użytkowników, jest niezbędna, aby utrzymać najwyższą jakość usług. Wdrożenie narzędzi automatyzujących Ansible pozawala zaoszczędzić czas i pieniądze. Pracownicy operacyjni mogą się skupić się na utrzymaniu oraz rozwoju środowiska, jednocześnie redukując liczbę popełnianych błędów.