web-dev-qa-db-fra.com

Comment empaqueter un VM existant qui n'a pas été créé à l'aide de la commande vagrant up?

J'ai installé une VirtualBox, puis j'ai installé un système d'exploitation de base Ubuntu 12.10 Server Base. J'ai installé toutes sortes de paquets php et d'autres paquets dedans. Mes amis m'ont recommandé d'utiliser Vagrant afin que je puisse partager ma configuration avec mes coéquipiers facilement.

Parce que ma VirtualBox actuelle VM n'a pas été créée à l'aide de vagrant up, Je ne sais pas comment le conditionner. La documentation de Vagrant parle d'emballage mais commence par dire:

Avant de parcourir le reste de cette page, assurez-vous que l'environnement virtuel est créé en exécutant vagrant up.

Dans mon cas, mon VM existant n'a PAS été créé initialement en utilisant vagrant up.

Comment empaqueter ma machine virtuelle existante?

42
Kim Stacks

La chose importante à réaliser (et les documents vagabonds ne sont pas trop clairs à ce sujet) est qu'il existe deux "saveurs" d'emballage:

  1. Le guide d'emballage dans "mise en route" auquel vous faites référence suppose que vous avez commencé à partir d'une boîte de base vagabonde et que vous l'avez initialisé avec vagrant up, Ce que vous n'avez pas. Cela vous permet de empaqueter toutes les personnalisations que vous avez apportées à une boîte de base vagabonde .
  2. Si vous partez de zéro ou à partir d'une machine virtuelle VirtualBox "ordinaire", comme vous le faites, vous devez créer un boîte de base vagabonde . Vous devriez bien suivre le guide , qui est basé sur Ubuntu.

Il y a un guide détaillé pour créer des boîtes errantes à partir de zéro en utilisant Oracle Enterprise Linux, qui pourrait être utile. Vous pouvez également essayer VeeWee .

Alternativement, vous pouvez commencer avec un boîte de base Ubuntu 12.1 et porter vos personnalisations, auquel cas vous pouvez utiliser la première méthode d'emballage plus simple.

Mise à jour

Ce qui précède fait référence à Vagrant 1.0. Les choses ont légèrement changé en 1.1 et en particulier les documents ont été réécrits:

  1. La vagrant packagecommande vous permet de empaqueter toutes les personnalisations que vous avez apportées à une boîte de base vagabonde existante dans le de la même manière qu'en 1.0.
  2. La documentation pour la création de boîtes de base avec VirtualBox a été supprimée dans 1.1, mais les docs suggèrent que le processus est resté le même, mais maintenant un fichier supplémentaire metadata.jsonest requis car Vagrant 1.1 prend en charge plusieurs fournisseurs .
25
kynan

paquet vagrant --output box_name.box --base "vm machine name" --vagrantfile Vagrantfile

Assurez-vous que la redirection de port et les clés SSH sont correctement configurées.

Cela peut être un bon exemple: https://github.com/okfn/ckan/wiki/How-to-Create-a-CentOS-Vagrant-Base-Box

9
aminalid

N'importe quel VirtualBox peut être empaqueté dans des boîtes de base Vagrant (essentiellement OVA avec un Vagrantfile).

Les problèmes sont: le VM n'est pas construit selon les boîtes de base vagabondes, si vous ne le partagez pas sur vagrantbox.es alors ça ira.

Installez simplement vagrant (via gem ou le programme d'installation), exécutez la commande suivante dans le dossier VM pour le conditionner dans .box

NOTE : Pour Vagrant 1.2.x, la méthode d'installation recommandée utilise le package spécifique au système d'exploitation. Ruby Gem n'est PAS disponible pour 1.2.x.

vagrant package --base ubuntu --output /path/to/ubuntu.box

N'oubliez pas, si vous souhaitez partager la boîte de base vagabonde avec d'autres, mieux lire les documents et suivre ces règles pour le rendre plus facile pour les autres.

7
Terry Wang

Bien que ce ne soit pas une réponse complète, je pense que vous pouvez obtenir ce dont vous avez besoin dans la documentation, qui est assez complète. Je crois que vagrant up est simplement un moyen pratique de configurer une "boîte" vagabonde. Il existe un certain nombre d'exigences pour qu'une boîte soit conforme à Vagrant. Ils sont décrits ici ...

Documentation: Vagrant - Boîtes de base

Les os nus nécessaires pour une boîte sont les suivants ...

  • Ajouts d'invité VirtualBox pour les dossiers partagés, la redirection de port, etc.
  • SSH avec prise en charge d'authentification par clé pour l'utilisateur vagabond
  • Ruby & RubyGems pour installer Chef et Puppet
  • Chef et marionnette pour la prise en charge de l'approvisionnement

Une fois qu'une boîte est conforme à ces exigences, il suffit simplement d'utiliser le vagrant package commande pour créer une installation portable ...

Plus de documentation: Vagrant - Boxes

Donc, même si je n'ai pas de réponse complète, ne l'ayant jamais fait de cette façon, je pense qu'il est possible de mettre votre installation dans un état qui vous permettra de l'empaqueter et de la distribuer.

4
Gordon Freeman

Utilisez la commande 'VBoxManage list vms'! Je l'ai utilisée avec Sudo uniquement pour voir qu'il n'y avait pas de VMS répertorié. Utilisez donc la commande avec le bon utilisateur authentifié.

2
user3464976

Comme mentionné ici - http://sysadm.pp.ua/linux/sistemy-virtualizacii/vagrant-box-creation.html Vous avez besoin de trois choses pour que la boîte soit importée et emballée:

  • Installer les ajouts d'invité
  • Sudo sans mot de passe
  • Accès SSH Il vous suffit donc de vous connecter à votre Ubuntu 12.10, d'installer les compléments Vbox Guest, d'ajouter l'utilisateur "vagrant" avec un accès Sudo sans mot de passe.
1
david

Personnellement, l'aspect illusoire du processus d'emballage était le --base commutateur. Je soupçonne que cela pourrait être le cas avec beaucoup de gens. Check-out vagrant package --help pour la description. La documentation ne semble pas en faire mention non plus.

J'ai trouvé ces deux excellents guides détaillés pour créer des boîtes Vagrant à partir de machines qui étaient à l'origine des machines VirtualBox:

  1. Comment créer une boîte de base Vagrant CentOS
  2. Création d'une boîte de base à partir de zéro pour Vagrant
1
Batandwa

Le guide d'emballage dans "Mise en route" auquel vous vous référez suppose que vous avez commencé à partir d'une boîte de base vagabonde et que vous l'avez initialisé avec vagrant up, ce que vous n'avez pas. Cela vous permet de regrouper toutes les personnalisations que vous avez apportées à une boîte de base vagabonde.

Si vous partez de zéro ou d'une machine virtuelle "simple" VirtualBox, comme vous le faites, vous devez créer une boîte de base vagabonde. Vous devriez bien suivre le guide, qui est basé sur Ubuntu.

0
kumae

Regardez la documentation mise à jour pour trouver toutes les caractéristiques de votre box si vous voulez qu'elle fonctionne parfaitement avec vagrant:

http://docs.vagrantup.com/v2/virtualbox/boxes.html

Vous devriez également jeter un oeil à un grand projet appelé veewee, qui vous permet de scénariser la génération d'une boîte vagabonde à partir de Scractch. Cela signifie que veewee téléchargera réellement l'ISO à partir de votre distribution et l'installera sur une machine vierge virtuelle, puis configurera et installera toutes les dépendances.

Il est livré avec beaucoup de recettes pour tous les différents types de distribution Linux:

https://github.com/jedi4ever/veewee

Voici encore plus de boîtes. Ils disent que ce sont des boîtes de marionnettes mais ils travaillent avec tous les fournisseurs (chef, marionnette et script Shell):

https://github.com/puppetlabs/puppet-vagrant-boxes

0
fe_lix_