Automatyzacja procesów administracyjnych

December 9, 2021, 13:33

Automatyzacja zadań jest jednym z podstawowych sposobów usprawniania środowisk informatycznych. Niezależnie od wielkości organizacji, praktycznie wszędzie możemy znaleźć powtarzalne zadania, które muszą być systematycznie wykonywane.
Automatyzacja procesów administracyjnych może dotyczyć wielu aspektów pracy administratora, począwszy od prostych mechanizmów raportujących, a skończywszy na zaawansowanych rozwiązaniach pozwalających na zarządzanie, konfigurację oraz prowadzenie wdrożeń.
W przypadku lokalnych środowisk jednym z przydatniejszych rozwiązań wspierających automatyzację zadań jest program Windows PowerShell (dla systemów z serii MS Windows), a dla rodziny systemów uniksopodobnych program Ansible. 

Oczywiście w dzisiejszych czasach coraz częściej uzupełnieniem środowiska lokalnego są narzędzia chmurowe. Tutaj praktycznie każdy dostawca usług chmurowych ma swoje rozwiązanie do automatyzacji zadań związanych z ich środowiskiem chmurowym (np. dla platformy obliczeniowej Azure, Microsoft przygotował rozwiązanie Azure Automation).

Jednak w tym artykule chciałbym skupić się na rozwiązaniu Ansible. Jest to rozwiązanie multiplatformowe i chociaż jego możliwości jeśli chodzi o systemy Windows jest ograniczone, to w porównaniu do możliwości jakimi oprogramowanie dysponuje (mówię tu o  systemy z rodziny *nix), to nadal warto zapoznać się z tym narzędziem, ponieważ oprócz zarządzania środowiskiem lokalnym, ma możliwość zaciągnąć listę serwerów z zewnętrznego źródła – na przykład Azure, OpenStack czy Google Cloud.

Jak działa Ansible? Jest to przede wszystkim platforma bezagentowa. Oznacza to, że nie trzeba instalować żadnego dodatkowego oprogramowania na zarządzanych serwerach. Oprogramowanie łączy się z nimi za pomocą protokołu SSH, co zapewnia wysokie bezpieczeństwo i nie wymaga dodatkowych zasobów, polityk bezpieczeństwa czy otwartych portów. Rozwiązanie nie potrzebuje również dodatkowej, niestandardowej infrastruktury, co ułatwia jego wdrożenie.
Ansible działa trochę inaczej niż odpalenie skryptu w PowerShell. W skrócie: po połączeniu z serwerem, wgrywa małe aplikacje-moduły (moduły, to zasoby wykorzystywane w opisie deklaratywnym stanu systemu), następnie moduły te są wykonywane, a po ich wykonaniu kasowane. Kolejną zaletą jest to, że program składa się m.in. z modułów – małych aplikacji napisaneych w dowolnym języku skryptowym, które wykonują jakaś konkretną pojedynczą czynność. Moduły można odpalać pojedynczo (imperatywnie) lub deklaratywnie za pomocą opisanego stanu końcowego.
Kolejnym składnikiem programu jest inwentarz – lista serwerów, do których Ansible będzie się podłączało i które będzie monitorowało. Maszyny można łączyć w grupy, a na ich podstawie zbudować zbiory różnych konfiguracji w zależności od serwera.
Ostatnim opisanym w tym artykule składnikiem Ansible są Playbook-i, czyli narzędzie do „upraszczania” tego co ma być zrobione. Może to być np. odpalenie komendy restartu, albo wdrożenie jakiegoś rozwiązania jak np. inicjacja bazy danych i wypełnienie jej danymi. Przy czym system jest Idempotentny, co oznacza, że raz wykonanego kroku przy kolejnym odpaleniu playbook-a tylko sprawdzi stan wykonania zadań i przejdzie krok dalej (chyba, że chcemy inaczej).
Na koniec, zachęcam do zapoznania się nie tylko z przedstawionymi rozwiązaniami z tego artykułu, ale też innymi dostępnymi na rynku. Przy czym zdaniem autora tego artykułu, z dostępnych rozwiązań Ansible jest najbardziej uniwersalnym rozwiązaniem.

MZ