Quiere distribuir máquinas virtuales Linux para que los estudiantes trabajen

25

Tengo estudiantes con Mac y Windows. Cada semestre, siempre hay muchas preguntas sobre cómo instalar la herramienta "X". Me gustaría crear una sola máquina virtual Linux (he probado VirtualBox) y distribuir la imagen. De esa manera, todas las herramientas están preinstaladas y todos usan Linux.

La pregunta es, dado que las personas tienen hardware gráfico diferente, ¿cómo funciona? ¿O funciona? Y si lo hace, ¿cómo lo distribuyo? ¿Tienen que instalar VirtualBox, luego cargar algunos archivos que les doy, o puedo crear un único instalador fácilmente?

Dov
fuente
13
Virtualbox le permite exportar un dispositivo . Ese archivo se puede importar en cualquier software de virtualización (VMWare, Virtualbox, etc.) y se configura en el hardware local. Esto parece ser lo que estás pidiendo. No es posible un solo instalador, porque no puede ejecutar el mismo programa en Windows (.exe) y Mac (.app).
GiantTree
¿Tengo que volver a instalar de manera diferente o puedo guardar mi máquina virtual como un dispositivo?
Dov
Puede guardar cualquier máquina virtual como un dispositivo en Virtualbox. Solo hazlo: Archivo -> Exportar dispositivo Ctrl + E
GiantTree
Algunos sugieren Vagrant como una solución, ya que el tamaño del archivo puede ser un problema durante las descargas del archivo de su dispositivo. A decir verdad, si instala un entorno minimalista y utiliza un aprovisionamiento delgado al crear el HD virtual, puede terminar con un archivo muy factible de 100 MB o menos. Solo quería agregar eso allí ya que nadie más lo abordó.
Geruta
1
@gronostaj: ¡Parece que esta máquina virtual pobre quedó atrapada en la matriz! : O
Zaibis

Respuestas:

24

Me gusta la respuesta centrada en Vagrant de mperrin , pero como puede ver en los comentarios allí, mi opinión personal es "mantenerlo simple" y recomendaría una exportación simple de un VirtualBox OVA como lo configuró y se lo pasó a sus estudiantes .

Dicho esto, preguntas esto:

La pregunta es, dado que las personas tienen hardware gráfico diferente, ¿cómo funciona? ¿O funciona? Y si lo hace, ¿cómo lo distribuyo? ¿Tienen que instalar VirtualBox, luego cargar algunos archivos que les doy, o puedo crear un único instalador fácilmente?

Virando hacia DevOps

No estoy muy seguro de lo que estás enseñando o haciendo o de lo que esperas que tus estudiantes salgan de todo este ejercicio, pero muchas de las preocupaciones que estás transmitiendo se desvían al ámbito de DevOps (desarrollo y operaciones) y es posible que quieras considerar mezclar ese concepto en sus enseñanzas.

Ahora no creo que deba transmitirse todo el concepto de DevOps, pero en mi opinión su creación de un VirtualBox OVA estable que luego pasa a los estudiantes y les pide que usen en las máquinas de su hogar / escuela definitivamente abriría una puerta a preguntas sobre cómo se debe tratar con diferentes configuraciones de hardware / sistema y cómo se puede adaptar.

Por lo tanto, mi recomendación para usted es recomendar encarecidamente que los estudiantes usen el VirtualBox OVA que configuraría, pero que también esté abierto a permitir que los estudiantes simplemente instalen herramientas por su cuenta. Mi instinto me dice que el 95%, o más, de los estudiantes usaría feliz y fácilmente el método VirtualBox OVA, pero no puede esperar que sea 100% perfecto.

Quizás al final debería tener algunos requisitos básicos para el uso de la herramienta del curso y ser flexible en su implementación.

Sea flexible con respecto a cómo se usan las herramientas

Por ejemplo, desarrollo mucho PHP y administro / DevOps de sistemas relacionados con el desarrollo PHP. Y como estoy en una Mac, prefiero usar MAMP para el desarrollo local. Pero trabajo con desarrolladores que usan Linux o Windows para su desarrollo. Diablos, a algunos les gusta usar Vagrant junto con VirtualBox para sus necesidades de desarrollo de LAMP. Y mi actitud es que no me importa cuál es su configuración básica del sistema operativo. Mientras su versión PHP esté en línea con las versiones que usan mis clientes, estoy bien con lo que sea.

Ocasionalmente, un desarrollador indicará que un error se debe a que, por ejemplo, el código que he probado en MAMP "no es el mismo" que lo que sería en una configuración de Linux LAMP. Y digo con 100% de confianza, que siempre he demostrado que el problema no es el sistema operativo base sino la codificación PHP en sí.

Entonces, todo esto es básicamente transmitir lo siguiente: simplemente sea flexible en su explicación del uso de una configuración de VirtualBox a los estudiantes y no espere que un sistema operativo alimente con cuchara simplemente termine todos los problemas. Podría eliminar el 95% de sus problemas del parque, pero ese 5% restante siempre tendrá que abordarse de alguna manera. Por lo tanto, mire una configuración de VirtualBox, y tal vez un script Vagrant, como una herramienta que se puede usar en un arsenal para facilitar la vida de algunos, pero no necesariamente la solución final para todos los problemas.

JakeGould
fuente
3
enseñando estructuras de C ++, java, Data, y este es un intento de escapar de sysadmin / devops que no me interesa.
Dov
1
@Dov Bueno, si ese es el caso, exportar un VirtualBox OVA y distribuirlo a la gente de tu clase es la mejor manera de hacerlo.
JakeGould
18

Deberías echar un vistazo a Vagrant .

Vagrant es compatible con VirtualBox y le permite:

Cree y configure entornos de desarrollo ligeros, reproducibles y portátiles.

Será mucho más fácil compartir un solo archivo de texto que una gran exportación de imagen de VirtualBox. Especialmente si quieres gestionar actualizaciones.

Una vez que VirtualBox y Vagrant están instalados, simplemente:

vagrant up

Será:

Un solo Vagrantfile también puede manejar las especificidades de los hosts de Windows o Mac.

mperrin
fuente
77
Si bien Vagrant no es una mala idea, simplemente exportar un dispositivo VirtualBox, instruir a los estudiantes para que instalen VirtualBox y luego hacer que importen ese dispositivo en VirtualBox hace el trabajo en unos pocos pasos sin que Vagrant literalmente reconstruya una máquina desde cero o corra el riesgo de Vagrant idiosincrasias apareciendo en la mezcla.
JakeGould
1
Tienes razón, las exportaciones son seguramente el enfoque más sencillo y directo. Pero dependiendo de las necesidades, pensé que vagabundo tiene que mencionarse aquí. Administrar las cargas / descargas de archivos ovales grandes puede ser problemático, especialmente si las actualizaciones deben realizarse por proyecto. Más comparación de los dos enfoques se puede encontrar en este muy buen hilo superuser.com/questions/584100/...
mperrin
Muy buenas notas en esa otra publicación. Mi opinión es la siguiente: si cree que necesita Vagrant para implementar más de 2 servidores mediante secuencias de comandos, hágalo. Pero para la mayoría de los usuarios de escritorio y desarrolladores simples, simplemente "rodar el suyo" a través de VirtualBox funciona igual de bien.
JakeGould
1
En su caso, otra ventaja de vagabundo sobre una exportación es la capacidad para que sus alumnos aprendan el "cómo" instalar y configurar la imagen inspeccionando el script de aprovisionamiento. Mucho más fácil que pasar por la historia de la imagen.
mperrin
8

No importaría en absoluto: virtualbox (y bueno, cualquier otro software de virtualización) emula su propio adaptador de video (lógica cirrus IIRC). Si bien el archivo virtualbox tradicional se divide en diferentes archivos para la configuración y el almacenamiento, puede exportarlo a un archivo ovf como se sugiere. Si sus alumnos pueden instalar virtualbox o vmware, debería ser trivial. Si no, necesitan aprender.

Instalar virtualbox es bastante trivial (suponiendo que tenga soporte de hardware).

Hay algunas cosas que sugeriría: mantenga la VM en 32 bits (para que no tenga que preocuparse por el soporte de VT-X en el host), creando un tutorial para instalar virtualbox en los 2 sistemas operativos grandes (Windows es sencillo, Linux necesita algunos pasos adicionales) e importar el archivo OVF. Esto también significa que si los estudiantes quieren usar vmware player o similares, pueden hacerlo. Use NAT para la creación de redes a menos que necesite ejecutar un servidor accesible desde el exterior.

Si el rendimiento no es un problema, probablemente podría agrupar todo en una instancia de QEMU (se pueden configurar para que se ejecuten de forma autónoma) y secuencias de comandos de inicio adecuadas. Consideraría que este es el último recurso.

Me gustaría señalar que muchas universidades realmente proporcionan una máquina virtual con las herramientas adecuadas ( IIRC lo cumple con CS 50 y es un curso de edx disponible gratuitamente), por lo que podría valer la pena ver cómo lo hacen.

Journeyman Geek
fuente
3

Como alternativa a la mayoría de la tecnología de virtualización, Linux (por ejemplo, Ubuntu) se puede instalar en una unidad de disco USB. Casi todas las computadoras arrancarán con una memoria USB, y la mayoría de los instaladores modernos detectarán tarjetas gráficas / tarjetas de red en el momento del arranque. Si instala un Ubuntu de 32 bits, se ejecutará en casi todo el hardware que las personas puedan tener en casa.

Son fáciles de distribuir y no requieren NINGÚN software adicional instalado. También se pueden mover fácilmente de una máquina a otra: desenchúfelo de la computadora de la escuela y guárdelo en su bolsillo. Cuando llegues a casa, solo conéctalo.

Se pueden obtener a un precio bastante bajo (¡me doy cuenta de que los presupuestos escolares son muy limitados!); dependiendo de qué aplicación se ejecute en la máquina, 4 gb deberían ser suficientes, quizás 8 gb.

AMADANON Inc.
fuente
Todos en la escuela de posgrado tienen una computadora portátil. No creo que sea necesario un usb.
Dov
1

Otra opción a considerar. Si realmente no le preocupa que tengan una GUI, puede usar algo como terminal.com .

Puede crear su propia instantánea pública y simplemente mantenerla disponible para sus alumnos. Es similar al enfoque de VirtualBox, pero en lugar de instalar las máquinas virtuales en su propia máquina, está en la nube de la máquina de otra persona.

Entonces todo lo que necesitan es un navegador web suficientemente moderno. Y si están interesados, pueden configurarlo para que puedan usar SSH / Putty / etc.

Según sus cifras, si los estudiantes usan la microinstancia (256 MB de RAM, un par de GB de espacio en disco), si pausan la VM cuando no la usan, les costaría $ 9 / año ejecutarla durante 8h / día. No puedo hablar por terminal.com, pero sospecho que si los contactó, podrían ofrecerle algún tipo de descuento educativo.

Wayne Werner
fuente
Un servicio similar es el acceso público gratuito de shell de [SDF.org] (sdf.org/?join) para educadores. Enseñar preguntas frecuentes . No es una máquina virtual, pero sigue siendo buena.
HSchmale