Tworzenie maszyny Wirtualnej Ubuntu do dystrybucji

19

Jestem TA na kurs programowania i mam zadanie tworzenia obrazu maszyny wirtualnej opartej na Ubuntu 14.04 LTS ze wstępnie zainstalowanym całym niezbędnym oprogramowaniem (do programowania w C ++ i Python), aby wszyscy studenci mieli ten sam system wirtualny i unikaliśmy zmagań sprawiając, że wszystko będzie działać na różnych maszynach i systemach operacyjnych. Zamierzamy używać Virtual Box jako hosta oprogramowania VM, ponieważ jest ono bezpłatne i dostępne na wiele platform.

Naiwnie chciałbym użyć obrazu dysku Ubuntu 14.04 LTS, uruchomić go w moim Virtual Box, zainstalować na wirtualnym dysku twardym (VDI), założyć konto „studenckie” ze wstępnie zdefiniowanym hasłem, zainstalować wszystkie niezbędne oprogramowanie, zamknąć w dół maszyny wirtualnej i rozpowszechnij plik VDI. Poprosimy każdego ucznia o zaimportowanie VDI do Virtual Box, uruchomienie go i skonfigurowanie konta osobistego (lub po prostu użyj domyślnego konta studenta).

  • Czy powyższa procedura jest wykonalna?
  • Na co wpadać w pułapkę? Musimy to być w zasadzie głupie. Oczekujemy ponad 80 studentów i jesteśmy tylko czterema TA, więc nie możemy zapewnić indywidualnego wsparcia.
  • Czy istnieją wady korzystania z dynamicznie przydzielanego wirtualnego dysku twardego typu VDI?
  • Czy mogę instalować Dodatki dla gości Virtual Box od samego początku, czy robi coś konkretnego dla hosta?
  • Czy istnieje bardziej elegancki sposób obsługi tworzenia konta użytkownika? Najlepiej byłoby, gdyby Ubuntu uruchomił je przy pomocy kreatora tworzenia konta i kazał im ustawić hasła (a także dodać je do pliku sudoers) przy pierwszym uruchomieniu obrazu. Nie jest to jednak priorytetem. Wydaje mi się, że posiadanie konta domyślnego jest w porządku.
Jonas Greitemann
źródło
3
Pamiętaj, że musisz dołączyć ofertę na kod źródłowy, ponieważ dystrybuujesz oprogramowanie zgodnie z warunkami GPL.
ChrisInEdmonton
@ChrisInEdmonton Dobra uwaga. Ponieważ sam nie piszę żadnego kodu, czy jest to technicznie modyfikacja, czy tylko redystrybucja? Czy wystarczy wskazać uczniom źródła Ubuntu lub stron trzecich, czy powinni zapytać (nie chcą), czy też jestem prawnie zobowiązany do proaktywnego udostępniania tych źródeł? Czy to ważne, że nie publikuję obrazu, a raczej udostępniam go ograniczonej grupie odbiorców z ograniczonym dostępem?
Jonas Greitemann
Wskażę ci tylko GPL, ponieważ nie jestem prawnikiem. Jest bardzo mało prawdopodobne, aby stało się tutaj problemem. :)
ChrisInEdmonton
2
Powiedziałbym, że nie musisz tego robić razem z samym obrazem Ubuntu: gnu.org/licenses/… Po prostu napisz gdzieś w instrukcji, jak pobrać kod źródłowy.
Markon
1
Zanim to zrobisz, możesz dokładnie zapoznać się z zasadami własności intelektualnej i zasadami redystrybucji firmy Canonical. Chociaż oprogramowanie GPL można bezpłatnie rozpowszechniać ze źródłem, a prawie każda inna licencja, na którą można znaleźć oprogramowanie licencjonowane w typowej dystrybucji Linuksa, pozwala na redystrybucję na rozsądnych warunkach, przynajmniej ostatnio pojawiły się kontrowersje dotyczące polityki IP firmy Canonical.
CVn

Odpowiedzi:

18

Chociaż pytanie to jest w pewnym stopniu oparte na opinii:

Tak, ta procedura jest wykonalna - wierzę, że osiągnie to, czego szukasz i jest to coś, co zrobiłem w przeszłości z innymi dystrybucjami Linuksa.

Jedyną prawdziwą pułapką są odstępy między dyskami ... upewnij się, że maszyny uczniów mają wystarczającą ilość miejsca na dysku, aby obsłużyć rozmiar dysku wirtualnego. Upewnij się również, że trzymasz kopię offline na co najmniej jednym komputerze, abyś mógł użyć dysku szablonu / dysku referencyjnego do szybkiego odtworzenia dysku, gdy uczeń zabije swój komputer.

Wadą dysku dynamicznego jest to, że system operacyjny hosta musi przydzielać coraz więcej miejsca na dysku, gdy maszyna wirtualna rośnie wraz z danymi / aktualizacjami. Ma to narzut związany z wydajnością, który czasami może być uciążliwy - szczególnie jeśli pracujesz na maszynie wirtualnej o niskiej mocy (moc komputera hosta minus moc używana do rozszerzenia dysku powoduje zwykle opóźnienie maszyn wirtualnych). następnie nie można go przenieść (nie wszystkie maszyny w laboratorium mogą mieć ponad 100 GB, gdy uczeń pomieszał swoją maszynę wirtualną)

Dodatki dla gości nie są specyficzne dla maszyny. Są raczej zestawem sterowników. Po zaimportowaniu maszyny wirtualnej do nowego hosta sterowniki maszyny wirtualnej wykryją i poprawią sprzęt w celu pracy na nowym hoście.

Eleganckie tworzenie użytkowników - nie jestem pewien, może skrypt, który uruchamia się przy pierwszym uruchomieniu i prosi użytkownika o utworzenie nowego konta, zanim skrypt sam się zniszczy? Zrobię kopanie i skontaktuję się z tobą, gdy będę miał 5 minut do stracenia.

Mam nadzieję, że to przynajmniej częściowo pomaga.

Fazer87
źródło
2
Dzięki, to bardzo pomaga. Moim głównym zmartwieniem nie jest zepsucie podstaw. Nie marnuj zbyt wiele czasu na tworzenie użytkownika. To naprawdę nie jest takie ważne. Po prostu pomyślałem, skoro i tak pytam, równie dobrze mogę zapytać, czy istnieje jakiś wbudowany mechanizm do obsługi tego, ponieważ zakładam, że jest to dość powszechny problem.
Jonas Greitemann
1
absolutnie - i jest całkiem możliwe, że istnieje wbudowane rozwiązanie, więc chcę je znaleźć.
Fazer87
13

Odpowiadając dokładnie na twoje pytanie, jeśli musisz dostosować maszynę wirtualną i przekazać jej dostarczalną maszynę wirtualną VirtualBox, zalecam użycie Packera do paczkowania maszyny wirtualnej ze wszystkimi wymaganymi zależnościami. Został zbudowany wyłącznie w tym celu i pozwala rozkręcić obraz z ISO , wykonać dowolne rezerwowanie w stosunku do tego obrazu, a następnie utworzyć dostarczalny obraz VM VirtualBox. Jest to również dobre dla ciebie, ponieważ dokumentuje dokładnie to, co zostało zrobione w celu dostarczenia na wypadek, gdybyś chciał go odtworzyć / dodać coś do niego. Możesz także sprawdzić projekt w systemie kontroli źródła i wprowadzić zmiany. Oto przykład tego, co zostało zrobione, aby zacząć.

Jeśli jednak chcesz, aby działały szybko, polecam użycie Vagrant i rozdanie uczniom pliku Vagrantfile, który wykonuje wymagane przez ciebie udostępnianie na standardowym obrazie Ubuntu . Ma to kilka zalet:

  • Vagrant działa od razu z VirtualBox i poradzi sobie z wszystkimi trudnymi częściami dla studentów, takimi jak konfigurowanie folderów współdzielonych, aby mogli łatwo kopiować pliki między maszyną wirtualną a maszyną hosta, konfigurując sieć, aby umożliwić im dostęp do Internetu dla nich itp. Oszczędza to również czas dokumentowania / debugowania problemów z konfiguracją VirtualBox.
  • Plik Vagrantfile jest znacznie mniejszy niż dostarczalna maszyna wirtualna. Jeśli chcesz zmienić / dodać coś do maszyny wirtualnej w połowie kursu, nie musisz odbudowywać nowej maszyny wirtualnej, po prostu daj jej zaktualizowany plik Vagrantfile.
  • Jeśli zepsują coś poza swoją zdolnością do naprawy, mogą bezboleśnie zniszczyć / ponownie wdrożyć maszynę wirtualną
  • Plik Vagrantfile pokaże uczniom dokładnie, co zostało zrobione na maszynie wirtualnej, dzięki czemu, gdy dojdą do punktu, w którym rozumieją wystarczająco dużo, będą mogli zobaczyć, co się dzieje pod maską, i prawdopodobnie też się z tego nauczą.

Oto przykładowy plik Vagrantfile pokazujący, jak wykonać pewne administrowanie obrazu Ubuntu 14.04.

Joel B.
źródło
3
Vagrant i / lub Packer są na to dobrym sposobem.
Sandy Chapman
9

Idealnie wykonalne. Alternatywą byłby Vagrant, Puppet, Chef lub coś podobnego do zbudowania maszyn wirtualnych od zera, ale jest to dużo pracy do skonfigurowania.

Zespół programistów w jednej z moich witryn robi to samo, aby szybko uruchomić nowych programistów.
1 wstępnie ustawione konto (z uprawnieniami sudo) na obrazie i krótki dokument z instrukcją wraz z krokami, jakie należy wykonać, aby utworzyć konto osobiste.

Uwaga: Najprawdopodobniej potrzebujesz dostępu do sieci / Internetu na maszynie wirtualnej. To może być zmostkowane lub NATowane na hoście. Niezależnie od tego, który wybierzesz, będziesz musiał pouczyć swoich uczniów, jak skonfigurować stronę hosta. Wystarczy skonfigurować kartę sieciową w maszynie wirtualnej jako urządzenie DHCP. Jest to bezpieczny punkt wyjścia dla większości konfiguracji, nawet jeśli później użytkownik musi ręcznie skonfigurować statyczny adres IP.
Umieszczenie statycznego adresu IP na maszynie wirtualnej naprawdę wymaga problemów. Jest związany, że może być używany przez inną maszynę wirtualną, która jest online w tej samej sieci LAN ...

Tonny
źródło
3
„Dużo pracy do skonfigurowania” zależy jednak od tego, jak często trzeba tworzyć obrazy. Czy ponownie uczysz się tego samego kursu w następnym semestrze? Czy w przyszłym semestrze może masz podobny kurs z innym językiem? Czy chcesz ułatwić życie następcom? Kompilatory C ++ zawierają błędy, które można naprawić w późniejszych wersjach. Nowy standard C ++ pojawi się w 2017 roku. Pamiętaj, że programista to osoba, która poświęca 2 godziny na napisanie programu do wykonania zadania w ciągu 2 sekund, które zajęłyby 2 minuty ręcznie. ;-)
Jörg W Mittag
2
@ JörgWMittag Oczywiście, masz rację. Ale jeśli nie znasz Vagrant i tym podobne, krzywa uczenia się może być dość stroma / czasochłonna. Osobiście prawdopodobnie wybrałbym rozwiązanie VM w celu szybkiego rozwiązania w tym semestrze, a podczas semestru poświęcę trochę czasu na opracowanie innego rozwiązania w celu uzyskania długoterminowego podejścia.
Tonny
2
Jeśli chodzi o dostęp do sieci, rozproszone maszyny wirtualne będą prawdopodobnie miały identyczne adresy MAC. Może to nie być problem z NAT, ale i tak warto zresetować adresy MAC.
user1937198
1
@ user1937198 MAC jest ustawiany przez VirtualBox / vmdk, a nie w samym VDI. Jeśli wskażesz i klikniesz nową maszynę wirtualną razem w VirtualBox, a następnie dodasz plik VDI, otrzymasz nowy MAC. (Podczas importowania z OVA zostaniesz poproszony o zresetowanie MAC.) Ale masz rację. Jest to jeszcze jedna rzecz do rozważenia, a na pewno problem, jeśli sieć działa w trybie mostowania.
Tonny
1
@ SteveBarnes Zwłaszcza zgadzam się z tobą ostatnie zdanie: bez względu na to, jak dobre jest instrukcje robocze, ludzie źle je zrozumieją, gdy będą go przestrzegać. Pomijają kroki (lub robią je w niewłaściwej kolejności), robią literówki w poleceniach, które muszą wykonać, lub myślą, że wiedzą lepiej i odbiegają od skryptu. Jeśli jest automatyczny (mój moduł sprawdzania pisowni nie jest pewien, czy to rzeczywiście słowo), najlepszym rozwiązaniem jest automatyzacja: nie ma miejsca na błędy.
Tonny