Próba przesiadki z VirtualBoxa na kontenery z Linuxem w technikum miała już miejsce z rok temu. Wówczas na starym komputerze zainstalowałem Dockera i na nim uruchomiłem kontenery z Ubuntu, do których przez ssh logowali się uczniowie. Jednym z tematów jest zarządzanie oprogramowaniem na Linuxie wykorzystując (w moim przypadku) apt. Pamiętam, iż wówczas była tragedia – apt update odpalone na 15 hostach jednocześnie trwało wieczność. Do tego doszły problemy sprzętowe z samym „serwerem”, przez co temat umarł śmiercią naturalną. Swoją drogą gdzieś na blogu są wpisy dotyczące tego przedsięwzięcia.
Kilka dni temu pojawiła się konieczność aktualności Windowsa w jednej z pracowni informatycznych – 10tka traci ważność, pora na Windowsa 11. Jak się okazało na komputerach zostało po kilka GB wolnego miejsca na dyskach. Powód? W VirtualBoxie była jedna maszyna-szablon i każdy z uczniów robił pełnego klona, na którym później pracował. Przynajmniej 5 osób na jednym komputerze, po kilka maszyn (kto uczył, ten wie dlaczego), nic dziwnego iż miejsca zjadało. Mam już serwer Proxmox, na którym działają kontenery dla klasy 4TI z MySQL. Odpalone to na Alpine – łączą się po ssh, wykorzystują komendę 'mysql -u root -p’, więcej nie potrzeba, więc im bez różnicy co działa pod spodem. Alpine jak każdy wie jest mega wydajny i lekki – 23 kontenery LXC, każdy zużywa po 65 MB RAMu i 90 MB dysku, nie odczuwalne.
Maszyny w VirtualBoxie to też ciągłe problemy – niby utworzyłem migawki, ale albo powywalali, albo im się nie chce przywracać ich, albo nie działają same maszyny, albo utworzyli klona ale nie utworzyli migawki. #TeksańskaMasakraTępąPiłąMechaniczną. Potrzebne coś czym można centralnie zarządzać. Zamiast powtarzać po 30 razy „przywróćcie najpierw czystą migawkę, żeby mieć świeży system do pracy„, po prostu odpalę skrypt na serwerze. Czy chcesz czy nie dostaniesz czysty system i nie będzie:
„-proszę Pana, bo nie mogę utworzyć katalogu
– jaki błąd dostajesz?
– file exists„
Także no…
Utworzyłem kontener z Ubuntu, aby wykorzystywać go do prezentacji podczas lekcji. Problemy z zalogowanie / stabilnościa wirtualki / itp – skutek: „logujcie się po ssh do niego„. Wszyscy pracowaliśmy na jednym kontenerze. Tłumaczenie tworzenia katalogów (na końcu nazwy dopiszcie numer z dziennika) / użytkowników (też z numerem z dziennika) / grup – rzeźnia. Dopisujcie numery z dziennika itd, itp.
Połączmy teraz to wszystko napisane do tej pory. Wniosek nasuwa się sam – trzeba odpalić kontenery oddzielne z Ubuntu (dlaczego Ubuntu, bo jest na egzaminie, kropka) dla wszystkich ucznia. No dobra, może nie dla wszystkich – 30 kontenerów, bo tyle jest maksymalnie uczniów w największej klasie. Każdy będzie miał swoją maszynę. IP: x.x.x.150+numer_z_dziennika. Zainstalowany jeden kontener -> przekształcony na szablon. Napisane kilka skryptów (sklonuj z szablonu, podmień adresację, utwórz snapshot, przywracaj z snapshota i uruchamiaj kontener).
Tylko, iż znowu trzeba będzie tłumaczyć APTa, znowu jest możliwość blokowania łącza, powolnego działania itd. Z pomocą przychodzi apt-mirror – lokalne repozytorium z Ubuntu. Poniżej instrukcja jak to odpaliłem.
TLDR:
# Konfiguracja serwera
1. Instalujemy apache2,
tworzymy katalog /var/www/html/ubuntu
i zmieniamy właściciela i grupę na www-data.
2. Instalujemy apt-mirror.
Plik konfiguracyjny usługi to /etc/apt/mirror.list.
Ustawiamy base_path na katalog utworzony w poprzednim punkcie.
3. W katalogu /var/www/html/ubuntu tworzymy katalog var i kopiujemy do niego skrypt /var/spool/apt-mirror/var/postmirror.sh
4. Pobranie pakietów do repo odbywa się przez uruchomienie apt-mirror. Możemy to wrzucić do crona (skrypt /usr/bin/apt-mirror)
* Pierwsze uruchomienie apt-mirror pokazało, iż do pobrania jest 650 GB. W tutorialu, który znalazłem w necie pokazywało 250 GB i mniej więcej taki dysk utworzyłem na maszynie. (Oczywiście serwer jest wirtualną maszyną na tym samym Proxmoxie. Miał być kontenerem, ale wykrzaczało się, więc utworzyłem VM.) Trochę za dużo. Edytując plik z punktu drugiego zostawiłem tylko pierwsze repo (main jammy), pozostałe wyłączyłem (security, updates,proposed, backports). W technikum do zaprezentowania update, search i install w zupełności wystarczy. Po tej zmianie pobrało jedynie 150 GB.
# Konfiguracja klienta
1. W pliku /etc/apt/source.list zmieniamy adresy serwerów z repo. Dokładniej to komentujemy updates i security (no chyba, iż na serwerze to macie, to zostawiamy), zostawiamy main i podmieniamy aby było:
deb http://IP/ubuntu/mirror/archive.ubuntu.com/ubuntu …….
Jeżeli nie zakomentujecie updates i security będzie wywalało błąd w stylu: The repository Release does not have a Release file.