20 votes

Créer une VM Ubuntu à distribuer

Je suis assistant de professeur pour un cours de programmation et j'ai pour mission 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 disposent tous du même système virtuel et que nous évitions de nous battre pour que tout fonctionne sur une variété de machines et de systèmes d'exploitation différents. Nous avons l'intention d'utiliser Virtual Box comme logiciel VM hôte, car il est gratuit et disponible pour toutes les plateformes.

Naïvement, je me contenterais d'utiliser l'image disque Ubuntu 14.04 LTS, de l'exécuter dans ma Virtual Box, de l'installer sur le disque dur virtuel (VDI), de créer un compte "étudiant" avec un mot de passe prédéfini, d'installer tous les logiciels nécessaires, d'arrêter la machine virtuelle et de distribuer le fichier VDI. Nous demanderions à chaque étudiant d'importer le VDI dans Virtual Box, de l'exécuter et de configurer son compte personnel (ou d'utiliser simplement le compte étudiant par défaut).

  • La procédure ci-dessus est-elle viable ?
  • Quels sont les pièges à éviter ? Nous avons besoin que ce système soit à peu près infaillible. Nous attendons plus de 80 étudiants et nous ne sommes que quatre assistants techniques, donc nous ne pouvons pas fournir un soutien individuel.
  • Y a-t-il des inconvénients à utiliser un disque dur virtuel de type VDI alloué dynamiquement ?
  • Est-ce que je peux installer les ajouts pour invités de Virtual Box dès le départ ou est-ce qu'ils font quelque chose de spécifique à l'hôte ?
  • Existe-t-il un moyen plus élégant de gérer la création d'un compte utilisateur ? Idéalement, Ubuntu devrait leur faire passer par un assistant de création de compte et leur faire définir leurs mots de passe (ainsi que les ajouter au fichier sudoers) la première fois qu'ils démarrent l'image. Mais ce n'est pas une priorité. Je suppose qu'avoir un compte par défaut est bien.

18voto

Fazer87 Points 11931

Bien que cette question soit quelque peu basée sur l'opinion, dans une certaine mesure :

Oui, cette procédure est viable - je crois qu'elle accomplirait ce que vous recherchez et c'est quelque chose que j'ai fait dans le passé avec d'autres distributions linux.

Le seul véritable écueil concerne l'espacement des disques... assurez-vous que les machines de vos élèves disposent d'un espace disque suffisant pour gérer la taille du disque virtuel. Veillez également à conserver une copie hors ligne sur au moins une machine afin de pouvoir utiliser le modèle/disque de référence pour recréer rapidement un disque lorsqu'un étudiant détruit sa machine.

L'inconvénient d'un disque dynamique est que le système d'exploitation hôte doit allouer de plus en plus d'espace disque au fur et à mesure que la VM s'enrichit de données ou de mises à jour. Cela entraîne un surcoût de performance qui peut parfois être un casse-tête, surtout si vous utilisez une VM peu puissante (la puissance de la machine hôte moins la puissance utilisée pour étendre un disque a tendance à rendre les VM un peu plus lentes) cela peut également rendre la VM non portable (toutes les machines de votre laboratoire n'ont pas forcément plus de 100 Go une fois qu'un étudiant a modifié sa VM).

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

Création d'un utilisateur élégant - 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 vous répondrai quand j'aurai 5 minutes de libre.

J'espère que cela vous aidera, du moins en partie.

13voto

cyb3rman Points 1

Pour répondre exactement à votre question, si vous avez besoin de personnaliser la VM et de leur remettre une VM VirtualBox livrable, je recommande d'utiliser Packer pour préparer la VM avec toutes les dépendances nécessaires. Il a été conçu dans ce but précis et vous permet d'installer une image à partir d'une ISO Il crée ensuite une image VM VirtualBox livrable. C'est une bonne chose pour vous aussi car cela documente exactement ce qui a été fait au produit livrable au cas où vous voudriez le reproduire ou y ajouter quelque chose. Vous pouvez également enregistrer le projet dans un système de contrôle des sources et y apporter des modifications. En voici un exemple de ce qui a été fait pour vous aider à démarrer.

Toutefois, si vous voulez qu'ils commencent à fonctionner rapidement, je vous recommande d'utiliser la fonction Vagrant et en distribuant à vos étudiants un fichier Vagrant qui effectue le provisionnement désiré sur un serveur image Ubuntu standard . Cela présente plusieurs avantages :

  • Vagrant fonctionne avec VirtualBox et s'occupe de toutes les parties difficiles pour les étudiants, comme la configuration des dossiers partagés pour qu'ils puissent copier facilement des fichiers entre la VM et la machine hôte, la configuration du réseau pour leur permettre d'accéder à la machine par Internet, etc. Cela vous évite également d'avoir à documenter/déboguer les problèmes de configuration de VirtualBox pour eux.
  • Un fichier Vagrant est beaucoup plus petit qu'une VM livrable. Si vous souhaitez modifier ou ajouter quelque chose à la VM à mi-parcours, vous n'avez pas besoin de reconstruire une nouvelle VM, il vous suffit de leur donner un fichier Vagrant mis à jour.
  • S'ils ont un problème qu'ils ne peuvent pas réparer, ils peuvent détruire ou redéployer la VM sans douleur.
  • Un fichier Vagrant montrera à vos étudiants exactement ce qui a été fait à la VM, de sorte que lorsqu'ils arriveront au point où ils comprendront suffisamment, ils pourront voir ce qui se passe sous le capot et éventuellement apprendre de cela aussi.

Voici un exemple de fichier Vagrant montrant comment faire du provisioning sur une image Ubuntu 14.04.

9voto

Tonny Points 26909

Parfaitement réalisable. L'alternative serait Vagrant, Puppet, Chef ou quelque chose de similaire pour construire les VM à partir de zéro, mais cela représente beaucoup de travail à mettre en place.

L'équipe de développement d'un de mes sites fait de même pour que les nouveaux développeurs soient rapidement opérationnels.
1 compte préétabli (avec des droits sudo) dans l'image et un court document d'instructions avec les étapes qu'ils doivent suivre pour créer leur propre compte personnel.

Remarque : vous aurez probablement besoin d'un accès réseau/internet à l'intérieur de la VM. Cet accès peut être ponté ou NATé sur l'hôte. Quel que soit votre choix, vous devrez expliquer à vos élèves comment configurer le côté hôte de ce système. Configurez simplement la carte réseau à l'intérieur de la 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 ensuite configurer manuellement une adresse IP statique.
Mettre une adresse IP statique dans la VM, c'est vraiment s'attirer des ennuis. Elle sera certainement déjà utilisée par une autre VM en ligne sur le même réseau local...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X