Creazione di una VM Ubuntu da distribuire


19

Sono un TA per un corso di programmazione e ho il compito di creare un'immagine di macchina virtuale basata su Ubuntu 14.04 LTS con tutto il software necessario (per lo sviluppo di C ++ e Python) preinstallato in modo tale che tutti gli studenti abbiano lo stesso sistema virtuale in esecuzione ed evitiamo le lotte di far funzionare tutto su una varietà di macchine e sistemi operativi diversi. Intendiamo utilizzare Virtual Box come software VM host in quanto è multipiattaforma gratuita e disponibile.

Incredibilmente, vorrei semplicemente usare l'immagine del disco Ubuntu 14.04 LTS, eseguirla nella mia Virtual Box, installarla sul disco rigido virtuale (VDI), impostare un account "studente" con una password predefinita, installare tutto il software necessario, chiudere nella macchina virtuale e distribuire il file VDI. Chiediamo a ogni studente di importare il VDI in Virtual Box, eseguirlo e configurare il proprio account personale (o semplicemente utilizzare l'account studente predefinito).

  • È la procedura di cui sopra praticabile?
  • Quali sono le insidie ​​da cercare? Abbiamo bisogno che questo sia praticamente infallibile. Ci aspettiamo più di 80 studenti e sono solo quattro AT, quindi non possiamo fornire supporto individuale.
  • Ci sono svantaggi nell'utilizzo di un HDD virtuale di tipo VDI allocato dinamicamente?
  • Va bene per me installare Virtual Guest's Guest Additions subito o fa qualcosa di specifico per l'host?
  • Esiste un modo più elegante per gestire la creazione dell'account utente? Idealmente, Ubuntu li avrebbe sottoposti a una procedura guidata per la creazione di un account e li avrebbe impostati le loro password (oltre a aggiungerle al file sudoers) al primo avvio dell'immagine. Questa non è una priorità, comunque. Immagino che avere un account predefinito vada bene.

3
Si noti che è necessario includere un'offerta per il codice sorgente, poiché si sta distribuendo software ai sensi della GPL.
ChrisInEdmonton,

@ChrisInEdmonton Un buon punto. Dal momento che non scrivo alcun codice da solo, questa è tecnicamente una modifica o è solo una ridistribuzione? E 'sufficiente ricordare gli studenti alle fonti di Ubuntu o di terze parti dovrebbero chiedere (non lo faranno) o sto obbligata per legge a fornire le fonti in modo proattivo? È importante che io non pubblichi l'immagine, ma piuttosto la fornisca a un pubblico limitato con accesso limitato?
Jonas Greitemann,

Ti indicherò semplicemente la GPL perché non sono un avvocato. È molto improbabile che diventi un problema qui. :)
ChrisInEdmonton,

2
Direi che non c'è bisogno di farlo insieme l'immagine di Ubuntu se stesso con: gnu.org/licenses/... solo un posto di scrittura nelle istruzioni come scaricare il codice sorgente.
Markon,

1
Prima di procedere, potresti voler esaminare attentamente le politiche sulla proprietà intellettuale e sulla ridistribuzione di Canonical. Mentre il software GPL è libero di ridistribuire con il sorgente e quasi tutte le altre licenze che troverai in una distribuzione tipica di Linux consentono la ridistribuzione a condizioni ragionevoli, almeno recentemente ci sono state alcune controversie sulla politica IP di Canonical.
un CVn del

Risposte:


18

Mentre questa domanda è in qualche modo basata sull'opinione in una misura:

Sì questa procedura è valida - credo che sarebbe compiere ciò che si sta cercando e che è qualcosa che ho fatto in passato con altre distribuzioni Linux.

L'unica vera trappola riguarda la spaziatura del disco ... assicurarsi che le macchine degli studenti dispongano di spazio su disco sufficiente per gestire le dimensioni del disco virtuale. Inoltre, assicurarsi di mantenere una copia offline su almeno un computer in modo da poter utilizzare il modello / disco di riferimento per ricreare rapidamente un disco quando uno studente uccide il proprio computer.

Gli svantaggi di un disco dinamico è che il sistema operativo host deve tenere assegnazione sempre più spazio su disco come la VM cresce con dati / aggiornamenti. Questo ha un sovraccarico di prestazioni che può essere un mal di testa a volte - soprattutto se si esegue su un basso alimentato VM (Host potere meno potenza della macchina viene utilizzato per espandere un disco tende a rendere le VM lag un po ') .. è anche rende potenzialmente poi portabili (non tutte le macchine nel vostro laboratorio possono avere 100 GB + una volta che uno studente ha pasticciato con la loro VM)

addons Guest non specifica macchina .. sono più o meno un set di driver. Quando si importa il VM in un nuovo ospite, i piloti VM in grado di rilevare e modificare l'hardware al lavoro sul nuovo host.

Creazione elegante di utenti - non è sicuro, forse uno script che viene eseguito al primo avvio e chiede a un utente di creare un nuovo account prima che lo script si autodistrugga? Farò qualche scavo e tornare a voi quando ho 5 minuti di ricambio.

Spero che questo aiuta, almeno in parte.


2
Grazie, aiuta parecchio. La mia preoccupazione principale non è quello di rovinare le basi. Non dedicare troppo tempo alla creazione degli utenti. Non è poi così importante. Ho solo pensato che, dal momento che mi è stato chiesto in ogni caso, potrei anche chiedere se c'è qualche meccanismo incorporato per gestire la cosa, come presumo che sia un problema abbastanza comune.
Jonas Greitemann,

1
assolutamente - ed è del tutto possibile che esista una soluzione integrata, quindi voglio trovarla.
Fazer87

13

Rispondere alla tua domanda esattamente, se è necessario adattare il VM e la mano loro un risultato finale di VirtualBox VM, mi consiglia di utilizzare Packer per imballaggio preconfezionato VM con tutte le dipendenze richieste. E 'costruito per questo scopo e permette di girare su un immagine da un ISO ed effettuare qualsiasi provisioning che si desidera contro quell'immagine, e quindi crea un'immagine consegnabile VirtualBox VM. Questo è un bene anche per voi, perché documenta esattamente ciò che è stato fatto per il risultato finale nel caso in cui si volesse riprodurre / aggiungere qualcosa ad esso. Inoltre, è possibile controllare il progetto in un sistema di controllo del codice sorgente e apportare le modifiche. Ecco un esempio di ciò che viene fatto per iniziare.

Tuttavia, se si desidera loro di ottenere rapidamente operativi, mi consiglia di utilizzare Vagrant e distribuire ai vostri studenti un Vagrantfile che esegue il provisioning desiderati è necessario un su un'immagine standard di Ubuntu . Questo ha diversi vantaggi:

  • Vagrant funziona subito con VirtualBox e gestirà tutte le parti rigide per gli studenti, come l'impostazione di cartelle condivise in modo che possano copiare facilmente i file tra la macchina virtuale e la macchina host, configurando la rete in modo da consentire loro l'accesso a Internet , ecc. Ciò consente inoltre di risparmiare tempo per documentare / eseguire il debug dei problemi di installazione di VirtualBox per essi.
  • Un Vagrantfile è molto più piccolo di una VM deliverable. Se si desidera cambiare / aggiungere qualcosa a metà strada VM attraverso il corso non si dispone di ricostruire una nuova VM, solo dare loro una versione aggiornata Vagrantfile.
  • Se pasticcio qualcosa oltre la loro capacità di ripararlo, possono distruggere in modo indolore / ridistribuire nuovamente la VM
  • Un Vagrantfile mostrerà agli studenti esattamente ciò che è stato fatto per la VM in modo che quando l'arrivare al punto in cui capiscono abbastanza, possono vedere che cosa sta succedendo sotto il cofano e, eventualmente, imparare da questo troppo.

Ecco un esempio di Vagrantfile che mostra come eseguire il provisioning su un'immagine Ubuntu 14.04.


3
Vagrant e / o Packer sono il modo di andare per questo.
Sandy Chapman,

9

Perfettamente fattibile. L'alternativa sarebbe Vagrant, Puppet, Chef o qualcosa di simile per costruire le VM da zero, ma è un sacco di lavoro da configurare.

Il team di sviluppo su uno dei miei siti fa lo stesso per rendere rapidamente operativi i nuovi sviluppatori.
1 account pre-impostato (con sudo-diritti) ad immagine e una breve istruzione-documento con le misure che devono adottare per creare il loro account personale su.

Si prega di notare: è l'accesso alla rete necessità / internet molto probabilmente all'interno della VM. Che possono essere sia a ponte o NATted sul host. Indipendentemente da quale si sceglie, si sarà necessario indicare i vostri studenti come configurare il lato host di questo. Messa a punto solo la scheda di rete all'interno della macchina virtuale come DHCP dispositivo. Questo è un punto di partenza sicuro per la maggior parte delle configurazioni, anche se l'utente deve poi configurare manualmente un indirizzo IP statico.
Mettere un indirizzo IP statico nella VM è davvero in cerca di guai. Esso è legato l'essere in uso già da un altro VM ottenere online sulla stessa LAN ...


3
Il "sacco di lavoro per l'installazione" dipende da quanto spesso è necessario creare le immagini, però. Stai Taing di nuovo lo stesso corso prossimo semestre? Stai forse Taing un corso simile con un diverso linguaggio prossimo semestre? Vuoi rendere la vita più facile per i vostri successori? Compilatori C ++ hanno dei bug che vengono risolti nelle versioni successive. Un nuovo standard C ++ esce nel 2017. Ricordate, un programmatore è una persona che spende 2 ore per scrivere un programma per eseguire un compito in 2 secondi che avrebbe preso 2 minuti a mano. ;-)
Jörg W Mittag

2
@ JörgWMittag Certo, hai ragione. Ma se non hai familiarità con Vagrant e simili la curva di apprendimento può essere piuttosto ripida / tempo. Personalmente probabilmente sceglierei la soluzione VM per una soluzione rapida questo semestre e durante il semestre impiegherò un po 'di tempo a sviluppare l'altra soluzione per un approccio a lungo termine.
Tonny

2
Per quanto riguarda l'accesso alla rete, le macchine virtuali distribuite avrà probabilmente identici indirizzi MAC. Potrebbe non essere un problema con NAT, ma è una buona idea ripristinare comunque gli indirizzi MAC.
user1937198

1
@ user1937198 Il MAC è impostato dal VirtualBox / vmdk, non impostato nel VDI stessa. Se si punta e clicca una nuova VM insieme in VirtualBox e quindi aggiungere il file VDI si otterrà una nuova MAC. (Con l'importazione da OVA ti verrà chiesto castrato o di non ripristinare il MAC.) Ma hai ragione. E 'un'altra cosa da prendere in considerazione e di certo un problema se la rete viene eseguito a colmare.
Tonny

1
@SteveBarnes Ho espcially d'accordo con l'ultima frase: Non importa quanto è buono il lavoro-istruzione è, la gente sbagliare quando lo seguono. Essi saltare i passaggi (o li fanno in modo sbagliato), make errori di battitura nei comandi di cui hanno bisogno per eseguire o che pensano di sapere meglio e si discostano dallo script. Se è automatizzabile (il mio correttore ortografico non è sicuro se questo è in realtà una parola) l'approccio migliore è ancora per automatizzare esso: Non c'è spazio per l'errore.
Tonny
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.