Jak stosunkowo łatwo przygotować obraz dla wielu maszyn, które pracują w sieci? Można skorzystać z Clonezilli w wersji serwer z bootowaniem przez PXE. 

Dokumentacja projektu drbl sugeruje używanie dwóch kart sieciowych, dedykowanej sieci klasy C do obsługi PXE (można wtedy wykorzystać multicast do odtwarzania wielu maszyn jednocześnie) oraz uruchamiania serwera DHCP na tej samej maszynie. Jeśli ktoś ma już istniejącą infrastrukturę to nie musi się obawiać drastycznych zmian – wszystko można w łatwy sposób zintegrować z istniejącym środowiskiem. W poniższym opisie wykorzystuję jedną sieciówkę, klasę adresową A oraz serwer DHCP na pfSense.

Pierwsze czego potrzebujemy to dedykowana maszyna, która będzie pełniła funkcję serwera PXE, na którym uruchomimy Clonezillę. Może to być maszyna fizyczna lub wirtualna – dla PXE nie ma to wielkiego znaczenia :) W moim przypadku minimalna instalacja CentOS-a 6.3. Dla ułatwienia wyłączamy selinuksa oraz iptables.

Jak już wszystko mamy zainstalowane i zaktualizowane (dodatkowo można zainstalować pakiet wget, który domyślnie nie jest instalowany w CentOS-ie) instalujemy klucz GPG dla pakietu drbl:

wget http://drbl.org/GPG-KEY-DRBL; rpm –import GPG-KEY-DRBL

Teraz możemy ściągnąć pakiet drbl i go zainstalować:

http://sourceforge.net/projects/drbl/files/drbl_stable/1.12.15-1drbl/drbl-1.12.15-1drbl.noarch.rpm/download; rpm -ihv drbl-1.12.15-1drbl.noarch.rpm

Uruchamiamy skrypt instalacyjny: /opt/drbl/sbin/drblsrv -i

Jeśli nasz serwer ma służyć tylko do serwowania szablonów i kopii zapasowych to nie musimy instalować dodatkowych obrazów systemów operacyjnych. Na kolejne dwa pytania można bezpiecznie odpowiedzieć „Nie” :) Instalator zacznie teraz instalację wymaganych komponentów – trochę to potrwa.

Kolejny krok to konfiguracja samej Clonezilli poleceniem: /opt/drbl/sbin/drblpush -i . Należy podać domenę, jaka jest używana w sieci, prefix serwera oraz kartę sieciową, na której oprogramowanie będzie nasłuchiwało (najpewniej eth0). Następnie potwierdzamy użycie adresacji klasy A i to, że nie będziemy używali multicastu. Wybrałem również opcję, aby nie zbierać adresów IP klientów oraz nie przypisywać tego samego adresu dla tego samego klienta. Zakres adresów to 130-240 (trzeba wybrać odpowiedni dla siebie – ja używam w swojej sieci akurat takich końcówek). Ważne jest, aby wybrany zakres adresów obejmował wszystkie IP-ki, które może przydzielić serwer DHCP. W przeciwnym przypadku po uruchomieniu klienta przez PXE Clonezilla poinformuje nas, że coś jest nie tak z konfiguracją klienta i nie będziemy mogli nic zrobić po za restartem maszyny.

Na kolejne pytania instalatora odpowiadamy: 2 – „I do NOT want to provide diskless Linux service to client”, 1 „Clonezilla box mode”. Należy wybrać katalog, w którym będą przechowywane obrazy maszyn (ja użyłem /opt/pxedata). Nie tworzyłem haseł dla klientów. Zaznaczyłem za to opcję wyświetlania okna wyboru na maszynie klienckiej. Pozostałe pytania zostawiłem z domyślnymi odpowiedziami oprócz opcji NAT, której nie używam. Wybrałem również stworzenie kopii plików /etc/hosts oraz konfiguracji IPtables – to nigdy nie zaszkodzi. To mniej więcej kończy kwestię konfiguracji  serwera PXE. Na koniec z racji tego, że korzystam z pfSense, na którym jest uruchomiony serwer DHCP, musiałem jeszcze wyłączyć demona DHCP na maszynie PXE:

service dhcpd stop; chkconfig dhcpd off

Teraz pozostaje konfiguracja tego co będzie robiła Clonezilla po uruchomieniu się na kliencie. W tym celu uruchamiamy polecenie:

/opt/drbl/sbin/dcs

i wybieramy opcje: „All”, „clonezilla-start”, „beginner” oraz „select-in-client”. W skrócie oznacza to, że klientowi wyświetli się okno z wyborem preferowanej akcji (odtworzenie, zapisanie danych, itp.). Jeszcze jedna sprawa do załatwienia: domyślnie serwer PXE musi się nazywać drbl. Żeby tego uniknąć wykonujemy:

/opt/drbl/sbin/mknic-nbi -c n

Teraz trzeba jeszcze zmodyfikować konfigurację serwera DHCP na pfSense. Logujemy się przez webUI i wybieramy: Services -> DHCP Server -> LAN (lub ten interfejs, do którego są podłączeni klienci PXE). Teraz szukamy wpisu „Network booting” i zaznaczamy „Enable network booting”, w oknie „next-server” wpisujemy IP serwera PXE, w oknie „filename” wpisujemy pxelinux.0, a w oknie „root-path-string” wpisujemy /tftpboot/nbi_img. Zapisujemy zmiany.

Teraz mamy działające środowisko PXE, w którym możemy robić kopie dysków klienckich przez sieć. Bardzo się to przydaje do tworzenia szablonów z maszynami do konkretnych zadań (serwer www, desktop, itp.). Dla ułatwienia ustawiłem każdą maszynę w sieci do bootowania przez sieć oraz w menu Clonezilli jako domyślna wybierana jest pozycja „Uruchom z dysku lokalnego”. Teraz postawienie nowej maszyny od zera do stanu z zainstalowanymi aktualizacjami, standardowym oprogramowaniem biurowym oraz logowaniem LDAP/AD to jakieś 8 minut :)