この記事は、
Vagrant公式ドキュメントの次の記事を翻訳したものです。
Creating a Base Box – VirtualBox Provider
Vagrant用のBoxファイルを仮想マシンから生成するにあたって、
VirtualBox上の仮想マシンを利用する場合に
特別必要となる手順を記載しています。
VirtualBoxだけでなく、
他のOS仮想環境とも共通となるBox作成手順は
次の記事に記載しています。
Vagrantのboxを自分で作成する方法
公式ドキュメント”CREATING A BASE BOX”の翻訳
この記事の中にも書かれていますが、
まず上記の共通事項を理解した上で、
本記事のVirtualBox向けの内容を読むことをおすすめします。
また、翻訳の精度や正確性は保証できませんので
予めご了承の上ご利用下さい。
以下翻訳
CREATING A BASE BOX – VirtualBox
他の仮想環境同様、VirtualBoxには、base box の作成方法に影響する独自のフォーマットを持っています。
本章を読むより前に、
general guide to creating base boxes
(訳注:翻訳はこちら)
を読むべきでしょう。
別のタブで開いておいて、頻繁に参照するのが最も便利かもしれません。
そのページには共通のソフトウェアインストールについて重要な情報が記載されています。
加えて、
basics of the box file format
も理解の助けになるでしょう。
注
この章はかなり発展的であり、
Vagrant入門者が理解する必要のあるものではありません。
もしVagrantを始めるところなら、この章はスキップして、
既存のboxを使って下さい。
あなたが上級者で、
自分自身でカスタマイズしたboxを作りたいのであれば、
この章が有用でしょう。
追加のソフトウェア
general guide to creating base boxes (翻訳はこちら)に基づく、
デフォルトでインストールされるべきソフトの他に、
VirtualBox base box はいくつかのソフトウェアを
追加で必要とします。
VIRTUALBOX GUEST ADDITIONS
共有フォルダが機能するために、
VirtualBox Guest Additions
をインストールしなければなりません。ゲストアディションをインストールすると、ゲストOSがVirtualBox内で実行されていることを認識できることによって最適化がなされるため、大抵パフォーマンスも改善します。
ゲストアディションをインストールする前に、Linuxカーネルヘッダと基本的な開発ツールが必要です。Ubuntuに置いては、これらを次のように簡単にインストールできます。
$ sudo apt-get install linux-headers-$(uname -r) build-essential
次に、ゲストアディションの(CD-ROMの)イメージが、(VirtualBoxの)GUIの”Devices”をクリックし、”Install Guest Additions”から利用できることを確認して下さい。そして、どこかにCD-ROMをマウントします。Ubuntuでは次のようになるでしょう。
$ sudo mount /dev/cdrom /mnt/cdrom
最後に、ゲストアディションをインストールするシステムに適切なシェルスクリプトを実行します。x86のLinuxであれば、それは次のようになります。
$ sudo sh /media/cdrom/VBoxLinuxAdditions.run
OSインストール時に、容量削減のため、、ディスクトップ環境をインストールしていない場合、OpenGLやWindowSystemDriverが無いという警告が出るかもしれませんが、無視してかまいません。
コマンドが成功すれば、ゲストアディションのインストールの完了です。
Boxのパッケージング
VagrantはVirtualBoxの base box をパッケージングするシンプルな手段を持っています。必要なソフトをすべてインストールしたら、次のコマンドを実行します
$ vagrant package --base my-virtual-machine
“my-virtual-machine”の部分は、 base box としてパッケージしたいVirtualBoxの仮想マシン名に置き換えて下さい。
この操作には数分が掛かります。完了すれば、”package.box”ファイルが新規の base box としてワーキングディレクトリに作成されるでしょう。ここまでで、 base box の作成に成功です。
Rawコンテンツ
このセクションはboxファイルに含まれている生のデータについて説明します。この情報は base box の作成にあたっては有用ではないかもしれません。しかし問題をデバッグする必要がある場合に有用であるかもしれません。
VirtualBoxの base box は VirtualBox からエクスポートされたファイルをアーカイブしたものです。ここにboxの内容の1例があります。
$ tree . |-- Vagrantfile |-- box-disk1.vmdk |-- box.ovf |-- metadata.json 0 directories, 4 files
VirtualBoxの仮想マシンからエクスポートされたファイル群に加え、”metadata.json”ファイルがVagrantによって使用されています。
“Vagrantfile”もあります。これはNATネットワークデバイスのMACアドレスの設定値を含んでいます。ViatualBoxが適切に機能するためにそれが必要とされるためです。
VirtualBoxマシンを生成する時、Vagrantは box ファイルの中に最初に見つけたovfファイルをインポートします。