web-dev-qa-db-fra.com

Créer un VM Ubuntu à distribuer

Je suis un assistant technique pour un cours de programmation et je suis chargé de créer une image de machine virtuelle basée sur Ubuntu 14.04 LTS avec tous les logiciels nécessaires (pour le développement C++ et Python) préinstallés de sorte que les étudiants exécutent tous le même système virtuel et évitent les difficultés. de tout faire fonctionner sur une variété de machines et de systèmes d’exploitation différents. Nous avons l’intention d’utiliser Virtual Box en tant que logiciel Host VM, car il est gratuit et multiplate-forme.

Naïvement, je voudrais simplement utiliser l'image disque Ubuntu 14.04 LTS, l'exécuter dans ma boîte virtuelle, l'installer sur le disque dur virtuel (VDI), configurer un compte "étudiant" avec un mot de passe prédéfini, installer tous les logiciels nécessaires, fermer la machine virtuelle et distribuez le fichier VDI. Nous demandons à chaque étudiant d'importer le VDI dans Virtual Box, de l'exécuter et de configurer son compte personnel (ou simplement d'utiliser le compte étudiant par défaut).

  • La procédure ci-dessus est-elle viable?
  • Quels sont les pièges à surveiller? Nous avons besoin que cela soit quasiment infaillible. Nous attendons plus de 80 étudiants et ne sommes que quatre assistants. Nous ne pouvons donc pas fournir d'assistance individuelle.
  • L'utilisation d'un disque dur virtuel de type VDI alloué dynamiquement présente-t-elle des inconvénients?
  • Puis-je installer les additions invité de Virtual Box dès le départ ou est-ce que cela fait quelque chose de spécifique à l'hôte?
  • Existe-t-il un moyen plus élégant de gérer la création du compte utilisateur? Idéalement, Ubuntu les soumettrait à un assistant de création de compte et leur demanderait de définir leur mot de passe (ainsi que de les ajouter au fichier sudoers) lors du premier démarrage de l'image. Ce n'est pas une priorité, cependant. Je suppose qu'avoir un compte par défaut est bien.
19
Jonas

Bien que cette question repose en quelque sorte sur l'opinion:

Oui, cette procédure est viable - je crois que cela permettrait d’atteindre ce que vous recherchez et c’est quelque chose que j’ai fait par le passé avec d’autres distributions Linux.

L'espacement des disques est le seul véritable problème: assurez-vous que les ordinateurs de vos étudiants disposent de suffisamment d'espace disque pour gérer la taille du disque virtuel. Assurez-vous également de conserver une copie hors ligne sur au moins un ordinateur afin de pouvoir utiliser le disque de modèle/de référence pour recréer rapidement un disque lorsqu'un élève tue son ordinateur.

L'inconvénient d'un disque dynamique est que le système d'exploitation hôte doit continuer à allouer de plus en plus d'espace disque à mesure que la VM grandit avec les données/mises à jour. Cela entraîne parfois une surcharge de performances qui peut parfois être source de maux de tête, en particulier si vous utilisez une machine basse tension VM (la puissance de la machine hôte utilisée pour développer un disque a tendance à ralentir un peu les machines virtuelles) Cela rend également potentiellement inutilisable (toutes les machines de votre laboratoire peuvent ne pas disposer de 100 Go + une fois qu'un étudiant a manipulé leur ordinateur virtuel)

Les addons invités ne sont pas spécifiques à la machine, ils constituent plutôt un ensemble de pilotes. Lorsque vous importez la VM dans un nouvel hôte, les pilotes VM détecteront et ajusteront votre matériel pour qu'il fonctionne sur le nouvel hôte.

Création élégante d'utilisateur - pas sûr, peut-être un script qui s'exécute au premier lancement et demande à un utilisateur de créer un nouveau compte avant que le script ne s'autodétruise? Je vais faire quelques recherches et je reviendrai vers vous quand il me restera 5 minutes.

J'espère que cela aide au moins en partie.

18
Fazer87

Répondant exactement à votre question, si vous devez personnaliser le VM et lui remettre un ordinateur virtuel VirtualBox livrable, je vous recommande d’utiliser Packer pour pré-emballer le VM avec tous les dépendances requises. Il est conçu uniquement pour cela et vous permet de créer une image image provenant d'un ISO , d'effectuer le provisionnement souhaité sur cette image, puis de créer une image VirtualBox VM livrable. C’est bon pour vous aussi, car il documente exactement ce qui a été fait pour le produit à livrer au cas où vous voudriez le reproduire/ajouter quelque chose. En outre, vous pouvez archiver le projet dans un système de contrôle de source et y apporter des modifications. Voici un exemple de cela pour vous aider à démarrer.

Cependant, si vous voulez qu'ils s'exécutent rapidement, je vous recommande d'utiliser Vagrant et de distribuer à vos étudiants un fichier Vagrant qui effectue le provisioning souhaité sur une image Ubuntu standard . Cela présente plusieurs avantages:

  • Vagrant fonctionne immédiatement avec VirtualBox et s’occupe de toutes les tâches difficiles des étudiants, telles que la configuration de dossiers partagés pour leur permettre de copier facilement des fichiers entre la VM et la machine hôte, en configurant la mise en réseau de manière à permettre à Internet. accès à la boîte pour eux, etc. Cela vous évite également d'avoir à documenter/déboguer les problèmes d'installation de VirtualBox pour eux.
  • Un fichier Vagrant est beaucoup plus petit qu'une machine virtuelle livrable. Si vous souhaitez modifier/ajouter quelque chose à la VM au milieu du cours, vous n'avez pas à reconstruire une nouvelle machine virtuelle, il suffit de leur donner un fichier Vagrant mis à jour.
  • S'ils gâchent quelque chose au-delà de leur capacité à le réparer, ils peuvent à nouveau facilement détruire/redéployer le VM
  • Un fichier Vagrant montrera à vos étudiants exactement ce qui a été fait au VM de sorte que, quand ils en arrivent à comprendre suffisamment, ils peuvent voir ce qui se passe sous le capot et en tirer éventuellement des leçons.

Voici n exemple de Vagrantfile montrant comment effectuer du provisioning sur une image Ubuntu 14.04.

13
Joel B

Parfaitement faisable. L'alternative serait Vagrant, Puppet, Chef ou quelque chose de similaire pour construire les VM à partir de rien, mais cela demande beaucoup de travail.

L'équipe de développement de l'un de mes sites fait de même pour que les nouveaux développeurs soient rapidement opérationnels.
1 compte prédéfini (avec les droits Sudo) dans l’image et un court document d’instruction indiquant les étapes à suivre pour créer son compte personnel.

Remarque: vous avez probablement besoin d'un accès réseau/Internet à l'intérieur de la machine virtuelle. Cela peut être ponté ou NAT sur l’hôte. Indépendamment de ce que vous choisissez, vous devrez expliquer à vos étudiants comment configurer le côté hôte de cette opération. Configurez simplement le NIC à l'intérieur du VM en tant que périphérique DHCP. C’est un point de départ sûr pour la plupart des configurations, même si l’utilisateur doit ultérieurement configurer manuellement une adresse IP statique.
Mettre une adresse IP statique dans le VM pose vraiment problème. Il est déjà lié à être déjà utilisé par un autre VM se connectant sur le même réseau local ...

9
Tonny