web-dev-qa-db-ja.com

vagrant upコマンドを使用して作成されなかった既存のVMをパッケージ化するにはどうすればよいですか?

VirtualBoxをインストールしてから、Ubuntu 12.10 Server Base OSをインストールしました。あらゆる種類のphpパッケージと他のパッケージをインストールしました。友達がVagrantの使用を勧めてくれたので、チームメイトと簡単にセットアップを共有できます。

現在のVirtualBox VMはvagrant up、それをパッケージ化する方法がわかりません。 Vagrantの ドキュメント はパッケージングについて説明していますが、次のように言っています:

このページの残りの部分に進む前に、vagrant upを実行して仮想環境が構築されていることを確認してください。

私の場合、既存のVMはvagrant upを使用して最初に作成されませんでした。

既存のVMをパッケージ化するにはどうすればよいですか?

42
Kim Stacks

気をつけなければならない重要なこと(そして、浮浪者のドキュメントはそれについてあまり明確ではありません)は、パッケージングには2つの「フレーバー」があるということです。

  1. "getting started"のパッケージングガイド 参照しているのは迷惑なベースボックスから開始したで、vagrant upで初期化していますが、そうではありません。これにより、Vagrantベースボックスに行ったカスタマイズをパッケージ化できます。
  2. 最初から、または「プレーンな」VirtualBox VMから開始する場合は、 vagrant base box を作成する必要があります。 Ubuntuに基づいている guide を使用すると問題ありません。

ゼロから浮浪者ボックスを作成するための詳細なガイド Oracle Enterprise Linuxを使用しており、役立つ場合があります。 VeeWee を試すこともできます。

または、 buntu 12.10 base box から始めてカスタマイズを移植することもできます。この場合、より簡単な最初のパッケージング方法を使用できます。

更新

上記はVagrant 1.0について言及しています。 1.1では状況がわずかに変更され、特にドキュメントが書き直されました。

  1. vagrant packagecommand を使用すると、1.0と同じ方法で既存のvagrantベースボックスに行ったカスタマイズをパッケージ化できます。
  2. VirtualBoxでベースボックスを作成するためのドキュメント は1.1で削除されましたが、 docs はプロセスが同じままであったが、追加のmetadata.jsonファイルを示唆しています- 必須 Vagrant 1.1がサポートするため 複数のプロバイダー
25
kynan

vagrantパッケージ--output box_name.box --base "vm machine name" --vagrantfile Vagrantfile

ポート転送とSSHキーが正しくセットアップされていることを確認してください。

これは良い例かもしれません: https://github.com/okfn/ckan/wiki/How-to-Create-a-CentOS-Vagrant-Base-Box

9
aminalid

VirtualBoxは、Vagrant Base Box(基本的にVagrantfile付きのOVA)にパッケージ化できます。

問題は:VMはvagrantベースボックスに従ってビルドされません。vagrantbox.esで共有していない場合は問題ありません。

(gemまたはインストーラーを使用して)vagrantをインストールし、VMフォルダーで次のコマンドを実行して.boxにパッケージ化します。

[〜#〜] note [〜#〜]:Vagrant 1.2.xの場合、推奨されるインストール方法はOS固有のパッケージを使用することです。 Ruby Gemは1.2.xでは使用できません。

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

浮浪者の基本ボックスを他の人と共有したい場合は、ドキュメントを読み、それらのルールに従って他の人が簡単に作業できるようにしてください。

7
Terry Wang

完全な答えではありませんが、ドキュメントから必要なものを入手できると思います。私は信じている vagrant upは、Vagrant「ボックス」をセットアップするための便利な手段にすぎません。箱がVagrantに準拠するためには多くの要件があります。ここで説明します...

ドキュメント: Vagrant-Base Boxes

箱に必要な裸の骨は次のとおりです...

  • 共有フォルダー、ポート転送などのVirtualBox Guest Additions.
  • Vagrantユーザーのキーベース認証サポート付きSSH
  • ChefとPuppetをインストールするためのRubyとRubyGems
  • プロビジョニングのサポートのためのシェフとパペット

ボックスがこれらの要件に準拠していれば、単にvagrant packageコマンドでポータブルインストールを作成...

その他のドキュメント: Vagrant-Boxes

ですから、完全な答えはありませんが、この方法で行ったことはありませんが、インストールをパッケージ化して配布できる状態にすることは可能だと思います。

4
Gordon Freeman

「VBoxManage list vms」コマンドを使用してください!VMSがリストされていないことを確認するためだけにSudoで使用したので、正しい認証されたユーザーでコマンドを使用してください。上記の回答もボックスの作成に役立ちました。

2
user3464976

ここで述べたように、 http://sysadm.pp.ua/linux/sistemy-virtualizacii/vagrant-box-creation.html boxをインポートしてパッケージ化するには、次のものが必要です:

  • ゲストの追加をインストールする
  • パスワードなしのSudo
  • SSHアクセスしたがって、Ubuntu 12.10にログインし、Vbox Guestの追加機能をインストールし、パスワードなしのSudoアクセスを持つユーザー「vagrant」を追加するだけです。
1
david

個人的に、パッケージングプロセスの幻想的な側面は--baseスイッチ。多くの人がそうだと思う。チェックアウト vagrant package --helpの説明。 ドキュメント も言及していないようです。

元々VirtualBoxマシンであったマシンからVagrantボックスを作成するための、これらの2つの優れた詳細なステップバイステップガイドを見つけました。

  1. CentOS Vagrantベースボックスの作成方法
  2. Vagrantの最初からベースボックスを作成する
1
Batandwa

参照している「はじめに」のパッケージングガイドは、Vagrantベースボックスから開始し、Vagrant Upで初期化したことを前提としていますが、そうではありません。これにより、Vagrantベースボックスに行ったカスタマイズをパッケージ化できます。

ゼロから、または「プレーン」VirtualBox VMから開始する場合、あなたがするように、浮浪者のベースボックスを作成する必要があります。 Ubuntuに基づいたガイドに従ってください。

0
kumae

更新されたドキュメントを見て、ボックスがvagrantとシームレスに動作するようにする場合に必要なすべての特性を見つけてください。

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

また、veeweeと呼ばれるすばらしいプロジェクトを見てください。これにより、scractchからvagrant boxの生成をスクリプト化できます。これは、veeweeが実際にディストリビューションからISOをダウンロードし、それをバージンVirtualboxマシンにインストールしてから、すべての依存関係を構成およびインストールすることを意味します。

これには、すべての異なる種類のLinuxディストリビューション用の多くのレシピが付属しています。

https://github.com/jedi4ever/veewee

さらに多くのボックスがあります。彼らはパペットボックスだと言っていますが、すべてのプロバイダー(シェフ、パペット、シェルスクリプト)で動作します:

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

0
fe_lix_