Diversity w polskim IT
Michał Giza
Michał Giza Administrator systemów / DevOps

FOG Project — szybkie wdrażanie systemów operacyjnych

Poznaj FOG Project, czyli wygodne narzędzie pozwalające na zarządzanie siecią (fizycznych) hostów i sprawdź, jak wdrażać systemy operacyjne,
6.06.20238 min
FOG Project — szybkie wdrażanie systemów operacyjnych

W różnych sytuacjach może pojawić się potrzeba zainstalowania i określonej konfiguracji wybranego systemu na wielu hostach. W przypadku środowisk zwirtualizowanych czy chmurowych raczej nie jest to duże wyzwanie, a wszystkie kroki można wykonać sprzed jednego ekranu. Natomiast wdrożenie nawet kilku fizycznych komputerów często wymaga zdecydowanie większego nakładu pracy.

Świetnym przykładem będzie przeciętna szkolna sala komputerowa. Znajduje się w niej kilkanaście jednostek, które najczęściej posiadają ten sam system operacyjny i parametry sprzętowe, a różnice między nimi obejmują prawdopodobnie adres IP, konta użytkowników i nazwę hosta. Mogą być także połączone z domeną Active Directory. Ręczne instalowanie systemu i oprogramowania na tylu stacjach to żmudne zajęcie. Tradycyjnie cenionym oraz powszechnie stosowanym rozwiązaniem jest utworzenie obrazu dysku (bardzo dobrze w tym celu sprawdza się Clonezilla) i przywracanie systemu w razie potrzeby, ale to wciąż wiąże się z pewnym kosztem.

Dlatego warto korzystać z metod automatyzacji tych czynności. Jednym z rozwiązań jest FOG Project. Wszystkimi dostępnymi opcjami zarządzamy z poziomu interfejsu webowego. Możemy zdalnie tworzyć i przywracać obrazy oraz wykonywać provisioning systemów. Co ważne, nie jesteśmy ograniczeni do konkretnej rodziny systemów, ponieważ FOG obsługuje zarówno Windows, jak i Linux czy macOS.

Komunikacja z docelowymi hostami odbywa się poprzez zainstalowane na nich agenty. Warto dodać, że agent napisany jest w języku C#, ale z użyciem Mono zadziała również w systemach Linux i macOS. FOG do funkcjonowania wykorzystuje poza tym także PXE, czyli rozwiązanie umożliwiające uruchomienie systemu z lokalizacji sieciowej. Bootloader pobierany jest wtedy z użyciem TFTP.

Konieczne będzie takie skonfigurowanie lokalnego serwera DHCP, aby umożliwić klientom pobranie loader’a PXE (zwykle ipxe.pxe lub undionly.kpxe) z serwera FOG. Nie można podać jednoznacznej instrukcji, ponieważ wszystko zależy od konkretnej implementacji DHCP używanej w naszej sieci. Należy również zmienić boot order na wszystkich docelowych komputerach, aby pierwszą opcją był właśnie PXE.

Instalacja FOG Project

Serwer FOG możemy postawić tylko na systemach Linux. W celu zainstalowania tego rozwiązania wystarczy uruchomić skrypt installfog.sh z katalogu bin z archiwum zawierającego najnowszą wersję. Wszystkie wydania znajdują się w serwisie GitHub, obecnie aktualna wersja to 1.5.10. Skrypt w pierwszej kolejności wyświetli kilka opcji, praktycznie wszystkie sugerowane nam odpowiedzi są właściwe. Ostatnie pytanie to zgoda na udostępnienie informacji o naszym środowisku (wersja systemu oraz FOG) autorom projektu, co jednak jest zupełnie opcjonalne.

Następnie zostaną zainstalowane potrzebne pakiety (m.in. serwer Apache, interpreter PHP, baza danych MariaDB, serwer TFTP), po czym zostanie wykonana aktualizacja wszystkich obecnych w systemie pakietów.

Obrazy są zapisywane w katalogu /images. Dobrym pomysłem jest użycie osobnego dysku do ich przechowywania.

Po pewnym czasie zostanie wyświetlony komunikat informujący o potrzebie wypełnienia bazy danych odpowiednią zawartością. Wchodzimy więc pod wyświetlony adres URL i klikamy przycisk Install/Update Now. Po zakończeniu w konsoli naciskamy klawisz Enter, aby skrypt wykonał ostatnie czynności. Została wykonana aktualizacja pakietów, co z reguły oznacza potrzebę ponownego uruchomienia systemu.

FOG powinien być gotowy do użycia. Logujemy się do panelu z użyciem domyślnych poświadczeń fog / password. Nazwę użytkownika i hasło zmienimy wchodząc w Users -> List All Users i wybierając jedyną dostępną po czystej instalacji pozycję, czyli fog.

Przygotowanie systemu wzorcowego

Zwykle przygotowując system przeznaczony na obraz, należy go w pełni zaktualizować i zainstalować najbardziej potrzebne aplikacje. Co prawda FOG pozwala na automatyczną instalację aplikacji po wdrożeniu systemu (patrz: Snapin), istnieje też Active Directory i zasady grupy, natomiast zainstalowanie oprogramowania na tym etapie pozwoli zaoszczędzić później czas. Jeśli zamierzamy dołączyć hosty do Active Directory, to dodatkowo warto od razu ustawić odpowiedni serwer DNS.

To pewnie oczywiste, ale dobry system wzorcowy nie powinien zawierać żadnych danych świadczących o wcześniejszym użyciu przez inne osoby. Z reguły najlepiej zainstalować czysty system z jednym kontem użytkownika (raczej unikać kont online) i dopiero potem doinstalować wymagane oprogramowanie.

Pewną przewagą FOG nad mniej złożonymi alternatywami jest fakt, że nie ogranicza nas rozmiar dysku (zakładając przeprowadzenie klonowania jednego dysku). Przykładowo Clonezilla nie pozwala na przywrócenie systemu, jeśli pojemność docelowego dysku jest mniejsza niż źródłowego. W FOG nie ma tego problemu, rozmiar partycji zostanie automatycznie zmieniony.

Instalacja agenta Windows

Jeśli system jest przygotowany do wykonania obrazu, możemy zainstalować agenta. Instalator pobierzemy z lokalnego serwera FOG. Odnośnik znajduje się na dole strony logowania, jego stałym adresem jest http://<adres_ip>/fog/management/index.php?node=client. Do wyboru mamy instalator w formacie MSI przeznaczony wyłącznie dla systemów Windows oraz wspomniany wyżej Smart Installer w formacie EXE działający niezależnie od środowiska. Po jego uruchomieniu wystarczy w zasadzie podać adres IP serwera z FOG.

System należy zrestartować lub ręcznie uruchomić usługę FOGService (niestety wtedy nie zobaczymy ikony w tray’u). Po udanym procesie wchodząc w Hosts -> List All Hosts powinniśmy zobaczyć pierwszego klienta (może to chwilę potrwać).

Wybieramy go z listy i klikamy przycisk Approve this host. Do FOG klienta możemy dodać łącznie na trzy sposoby. Jedynie ten z użyciem agenta wymaga dodatkowej akceptacji hostów w panelu.

Instalacja agenta Linux

Odpowiednie instrukcje zostały przedstawione w dokumentacji projektu. Niezależnie od dystrybucji musimy jedynie zainstalować Mono, a następnie poleceniem sudo mono SmartInstaller.exe uruchomić instalator agenta. Jeśli nasz system nie posiada interfejsu graficznego (bo jest to na przykład wersja serwerowa), wciąż możemy z powodzeniem korzystać z FOG, ale z jakiegoś powodu oczekujące zadania z kolejki są uruchamiane dopiero po ręcznym restarcie systemu.

Klient Linux w panelu FOG jest widoczny natychmiast po zakończeniu instalacji agenta.

Dodawanie hostów

Poszczególne hosty, na których zamierzamy wdrażać obrazy, możemy dodawać bezpośrednio w panelu FOG. Potrzebujemy w tym celu znać adres MAC przypisany do karty sieciowej. Po zakończeniu klonowania systemu nazwa hosta zostanie automatycznie ustawiona na odpowiednią, wybraną przez nas w panelu.

Jeszcze inny sposób to zwyczajne uruchomienie klienta z PXE. Wtedy wybieramy Perform Full Host Registration and Inventory bądź Quick Registration and Inventory. Można się domyślić, że druga opcja jest mniej skomplikowana. W jej wyniku nazwa hosta w panelu zostanie ustawiona na jego adres MAC. Nie oznacza to jednak, że manualna rejestracja wymaga zaawansowanej wiedzy — wystarczy odpowiedzieć na kilka pytań.

Załadowanie FOG z PXE pozwala też przywrócić obraz bez potrzeby dodawania zadania w panelu. Wybieramy wtedy opcję Deploy image, podajemy dostępy użytkownika w FOG i określamy obraz do przywrócenia.

Tworzenie obrazu

W celu utworzenia obrazu przechodzimy do zakładki Images -> Create New Image. Podajemy nazwę i wybieramy system operacyjny (Windows 11 nie jest dostępny na liście, ale oficjalnie jest wspierany). Możemy określić dodatkowe właściwości, takie jak typ obrazu, stopień kompresji oraz zdecydować o klonowaniu wszystkich bądź pojedynczych podłączonych dysków lub partycji.

Aby zainicjować tworzenie obrazu, musimy wybrać klienta i wskazać obraz, który zostanie z nim powiązany (opcja Host Image). Następnie w karcie Basic Tasks w widoku klienta przechodzimy do Capture, gdzie po prostu klikamy przycisk Task. Można określić czas wykonania tego „zadania”, w którym domyślna opcja to instant, czyli natychmiastowo. Na włączonym kliencie powinien pojawić się poniższy komunikat:

Jeśli poprawnie skonfigurowaliśmy serwer DHCP i ustawiliśmy bootowanie z sieci, prawdopodobnie po restarcie hosta zobaczymy proces tworzenia obrazu.

Snapin

FOG pozwala na automatyzację czynności, którą można wykorzystać do instalacji aplikacji czy wykonania pewnych skryptów. Ta funkcjonalność została nazwana Snapin. Przykładem będzie prosta instalacja stosu LEMP (Linux, NGINX, MySQL, PHP). Tworzymy skrypt Bash:

#!/bin/bash
apt update && apt install nginx php-fpm php-mysql mysql-server -y


Nadajemy nazwę dla dodawanego Snapin, jako template wskazujemy Bash Script i przesyłamy plik SH z powyższą zawartością.

Pojedynczy Snapin możemy wykonać w dowolnym momencie. Wystarczy w karcie interesującego nas klienta przejść do Basic Tasks -> Advanced -> Single Snapin i wskazać odpowiednią paczkę. Niestety po zakończeniu wykonywania nawet najbardziej podstawowych czynności potrzebny będzie restart systemu.

Tworzenie grupy

Szczególnie interesująca jest możliwość utworzenia grupy dodanych maszyn. Pozwoli to m.in. na automatyczne dołączenie klientów do domeny, jak również multicasting, co tutaj oznacza jednoczesne przesyłanie obrazu do kilku hostów w tym samym czasie.

Grupę tworzymy w zakładce Groups. Następnie w karcie Membership zaznaczamy hosty, które zamierzamy do niej dodać.

Dodawanie hostów do domeny AD

W karcie Active Directory określonej grupy wystarczy podać podstawowe informacje o domenie i poświadczenia użytkownika, który może dodawać klientów. Dzięki temu każdy przywrócony systemu zostanie w sposób zautomatyzowany dołączony do domeny. Warto też pamiętać o powiązaniu utworzonego wcześniej skryptu wykonującego polecenie sysprep.exe z odpowiedni parametrami — można tego oczywiście dokonać w karcie Snapin. Active Directory jest standardem w sieciach firmowych opartych w głównej mierze na systemach Windows. Pozwala na definiowanie różnych polityk i zarządzanie użytkownikami. Z perspektywy ciągłego przywracania systemów jest to właśnie istotne, ponieważ — używając profili mobilnych — jesteśmy w stanie zachować dane poszczególnych użytkowników na zewnętrznym serwerze w domenie, co pozwoli sprawnie je odtworzyć po kolejnym zalogowaniu.

Multi-Cast

Przechodząc do karty Basic Task naszej grupy zobaczymy opcję Mult-Cast. FOG w tej funkcji używa zewnętrznego narzędzia UDP Cast. Komputery zostaną ponownie uruchomione, a sam proces przywracania systemu w trybie multicast zostanie rozpoczęty w momencie, kiedy wszystkie hosty będą w pełni przygotowane. Podgląd trwania wszystkich zadań można zobaczyć w zakładce Tasks. Ich postęp powinien być stosunkowo jednakowy.

Ostatecznie wszystkie hosty zostaną dodane do domeny, co można zweryfikować w przystawce dsa.msc.

Konfiguracja serwera storage

Jednym z czynników wchodzących w skład tzw. wysokiej dostępności jest zapewnienie redundancji. FOG umożliwia dodanie kolejnego serwera pełniącego rolę storage dla danych obrazów. Sposób instalacji polega na tym, że w drugim kroku (czyli określeniu typu instalacji) wybieramy storage (s), a następnie podajemy adres IP lokalnego serwera FOG. Dalej wpisujemy poświadczenia użytkownika bazodanowego (widocznie po wejściu w FOG Configuration -> FOG Settings -> FOG Storage Nodes). Pozostałe czynności w skrypcie są analogiczne do zwykłej instalacji.

Dodany serwer będzie od teraz widoczny w zakładce Storage. Należy określić jego grupę. Jeśli nie tworzyliśmy wcześniej specyficznej, dostępna będzie wyłącznie jedna — default. Dane z głównego serwera zostaną zreplikowane na dodany właśnie storage.

Podsumowanie

FOG Project to wygodne narzędzie pozwalające na zarządzanie siecią (fizycznych) hostów. W całkiem łatwy sposób umożliwia wykonanie obrazów dysków / partycji na żądanie i odpowiednie dostosowanie systemów do naszych potrzeb. Dzięki zastosowaniu FOG możemy znacznie skrócić czas potrzebny na wdrożenie nowych systemów.

<p>Loading...</p>