Soy un TA para un curso de programación y tengo la tarea de crear una imagen de máquina virtual basada en Ubuntu 14.04 LTS con todo el software necesario (para el desarrollo de C ++ y Python) preinstalado para que todos los estudiantes tengan el mismo sistema virtual en ejecución y evitemos las dificultades de hacer que todo funcione en una variedad de máquinas y sistemas operativos diferentes. Tenemos la intención de usar Virtual Box como el software VM anfitrión ya que es multiplataforma gratuita y disponible.
Ingenuamente, usaría la imagen de disco Ubuntu 14.04 LTS, la ejecutaría en mi Virtual Box, la instalaría en el disco duro virtual (VDI), configuraría una cuenta de "estudiante" con una contraseña predefinida, instalaría todo el software necesario, cerraría baje la máquina virtual y distribuya el archivo VDI. Le pedimos a cada estudiante que importe el VDI a Virtual Box, lo ejecute y configure su cuenta personal (o simplemente use la cuenta de estudiante predeterminada).
- ¿Es viable el procedimiento anterior?
- ¿Cuáles son las trampas a tener en cuenta? Necesitamos que esto sea bastante infalible. Esperamos más de 80 estudiantes y solo somos cuatro TA, por lo que no podemos brindar apoyo individual.
- ¿Existen desventajas al usar un HDD virtual de tipo VDI asignado dinámicamente?
- ¿Está bien que instale Virtual Additions Guest Additions de inmediato o hace algo específico para el host?
- ¿Hay alguna forma más elegante de manejar la creación de la cuenta de usuario? Idealmente, Ubuntu los sometería a un asistente de creación de cuentas y les haría establecer sus contraseñas (así como agregarlas al archivo sudoers) la primera vez que inicien la imagen. Sin embargo, esto no es una prioridad. Supongo que tener una cuenta predeterminada está bien.
fuente
Respuestas:
Si bien esta pregunta es algo opinión basada en cierto grado:
Sí, este procedimiento es viable: creo que lograría lo que está buscando y es algo que he hecho en el pasado con otras distribuciones de Linux.
El único obstáculo real es el espacio entre discos ... asegúrese de que las máquinas de sus alumnos tengan suficiente espacio en disco para manejar el tamaño del disco virtual. Además, asegúrese de mantener una copia sin conexión en al menos una máquina para poder usar la plantilla / disco de referencia para recrear rápidamente un disco cuando un estudiante mata su máquina.
Las desventajas de un disco dinámico es que el sistema operativo host tiene que seguir asignando más y más espacio en disco a medida que la VM crece con datos / actualizaciones. Esto tiene una sobrecarga de rendimiento que a veces puede ser un dolor de cabeza, especialmente si está ejecutando en una máquina virtual de baja potencia (la potencia de la máquina host menos la energía que se usa para expandir un disco tiende a hacer que las máquinas virtuales se retrasen un poco) ... luego no se puede portar (no todas las máquinas en su laboratorio pueden tener 100GB + una vez que un estudiante se ha metido con su VM)
Los complementos invitados no son específicos de la máquina ... son más o menos un conjunto de controladores. Cuando importa la VM a un nuevo host, los controladores de la VM detectarán y ajustarán su hardware para que funcione en el nuevo host.
Creación elegante del usuario: ¿no está seguro, tal vez un script que se ejecuta en el primer lanzamiento y le pide al usuario que cree una nueva cuenta antes de que el script se autodestruya? Investigaré un poco y me pondré en contacto con usted cuando tenga 5 minutos de sobra.
Espero que esto al menos en parte ayude.
fuente
Respondiendo exactamente a su pregunta, si necesita adaptar la VM y entregarles una VM VirtualBox entregable, le recomiendo usar Packer para preempaquetar la VM con todas las dependencias requeridas. Está diseñado solo para este propósito y le permite girar una imagen desde un ISO , realizar cualquier aprovisionamiento que desee contra esa imagen y luego crear una imagen VM VirtualBox entregable. Esto también es bueno para usted porque documenta exactamente lo que se hizo para la entrega en caso de que alguna vez quiera reproducirlo / agregarle algo. Además, puede registrar el proyecto en un sistema de control de código fuente y realizar cambios. Aquí hay un ejemplo de lo que se está haciendo para comenzar.
Sin embargo, si desea que se ejecuten rápidamente, le recomiendo usar Vagrant y distribuir a sus estudiantes un Vagrantfile que realice el aprovisionamiento deseado que necesita en una imagen estándar de Ubuntu . Esto tiene varias ventajas:
Aquí hay un ejemplo de Vagrantfile que muestra cómo hacer un poco de aprovisionamiento en una imagen de Ubuntu 14.04.
fuente
Perfectamente factible. La alternativa sería Vagrant, Puppet, Chef o algo similar para construir las máquinas virtuales desde cero, pero eso es mucho trabajo para configurar.
El equipo de desarrollo de uno de mis sitios hace lo mismo para que los nuevos desarrolladores se pongan en marcha rápidamente.
1 cuenta preestablecida (con derechos de sudo) en la imagen y un breve documento de instrucciones con los pasos que deben seguir para crear su cuenta personal.
Tenga en cuenta: lo más probable es que necesite acceso a la red / internet dentro de la VM. Eso puede ser puenteado o NATado en el host. Independientemente de cuál elija, tendrá que instruir a sus alumnos sobre cómo configurar el lado host de esto. Simplemente configure la NIC dentro de la VM como dispositivo DHCP. Ese es un punto de partida seguro para la mayoría de las configuraciones, incluso si el usuario posteriormente debe configurar manualmente una dirección IP estática.
Poner una dirección IP estática en la VM realmente está pidiendo problemas. Está obligado a que otra VM ya esté en uso en línea en la misma LAN ...
fuente