Vagrant > VirtualBox > Creating A Base box[雑訳]
引き続き、Vagrantのドキュメントを雑に翻訳するシリーズです。
おそらくここまでで、VirtualBoxのBase Boxをつくる方法は揃うはずです。
いくつか、わかりにくい点もありますが、この記事の最後にその点にコメントします。
Base Boxをつくる
すべてのプロバイダ同様、VirtualBoxプロバイダはBase Boxのつくり方に影響を与える、カスタムBox形式を持ちます。
これを読む前に、Base Boxをつくるための一般ガイドをお読み下さい。Base Boxをつくるあいだ、頻繁に参照できるように、このページを別タブで開いておくのがベストかと思います。そちらのページは、Boxにインストールしておくべき共通のソフトウェアに関する重要な情報が掲載されています。
さらに、Boxファイルのフォーマットの基本を理解するのにも役立つでしょう。
高度なテーマ! これはVagrantのビギナーが理解する必要がない、まあまあ高度なテーマです。Vagrantを使い始めたばかりなら、ここを飛ばして、入手可能なBoxを使用して下さい。Vagrantの上級者で、自分のカスタムBoxを作りたいのであれば、これはまさにあなたのためのテーマです。
追加ソフトウェア
Base Boxをつくるための一般ガイドに基づいてインストールされるべきソフトウェアに加えて、VirtualBoxのBase Boxはいくつかの追加ソフトウェアが必要です。
VIRTUALBOX GUEST ADDITIONS
VirtualBox Guest Additionsインストールして、共有フォルダなどが機能するようにしなければなりません。Guest Additionsをインストールすることはまた、パフォーマンスを向上させることが多いでしょう。VirtualBox内でGuest Additionが実行されていることをゲストOSが知ることで、最適化を行うことができるからです。
Guest Additionsをインストールする前に、Linuxカーネル・ヘッダと基本的開発ツールが必要になります。Ubuntuでは、こんな感じで簡単にインストールできます:
$ sudo apt-get install linux-headers-$(uname -r) build-essential
次に、GUIを使い、"デバイス"から"Guest Additionsのインストール"をクリックすることで、Guest Additionsが使えることを確認して下さい。そしてCD-ROMをマウントして下さい。Ubuntuでは、これはたいていこんな感じです:
$ sudo mount /dev/cdrom /mnt/cdrom
最後に、Guest Additionsをインストールするために、システムに適したシェル・スクリプトを実行して下さい。たとえば、x86上のLinuxだと、次のようになります:
$ sudo sh /media/cdrom/VBoxLinuxAdditions.run
もしOSインストール時にデスクトップ環境をインストールしていなければ、容量を小さくするよう推奨されたときのように、VirtualBox Guest AdditionsがOpenGLやWindow System Driverがないことを警告するはずですが、これを無視してかまいません。
コマンドが成功すれば、Guest Addditionsがインストールされます!
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ファイルのRAWコンテンツについて示します。これはBase Boxをつくるときに役立つものではなく、必要なときに問題をデバッグするさいに役立ちうるものです。
a:nVirtualBoxのBase Box はVirtualBoxの仮想マシンのエクスポートの結果つくられるファイルのアーカイブです。こうしたBoxに含まれるものの例がこれです:
$ tree
…
|-- Vagrantfile
|-- box-disk1.vmdk
|-- box.ovf
|-- metadata.json
0 directories, 4 files
VirtualBox VMのエクスポートによるファイルに加え、Vagrantによって使用される"metadata.json"ファイルがあります。
また、"Vagrantfile"もあります。これは、NATネットワーク・デバイスのMACアドレスを適切にセットする設定も含んでいます。適切に機能するために、VirtualBoxはこれが正しいことを要求するからです。
VirtualBoxを立ち上げるとき、VagrantはBoxの中に見つかった最初の"ovf"ファイルをインポートます。
いくつかコメント。
Ubuntuのカーネル・ヘッダ
最近のもの(12.04とか)はgenericに統合されているはずです。
上述のように$uname -r
で置き換えても動きます。
はじめに「ミニマルインストール」でなく「標準インストール」したならばインストールされているはずです。
おそらくミニマルインストールをBase Boxにするより標準インストールをBase Boxにした方が、使い勝手は良いかと。
Guest Additionsのマウントポイント
/mnt/cdrom
にマウントして、/media/cdrom
にマウントされますか?
ぼくはされなかった……。
直接/mnt/cdrom
までcd
していって、管理者権限でsh ./VBoxLinuxAddition.run
したら実行されました。
RAWファイルの内容
package.boxファイルに含まれるのかと思い、拡張子を.tarにして解凍しても、metadata.jsonがないです。
これは、/.vagrant.d/boxes/配下のaddしたboxのディレクトリにできあがります。
つまりvagrant box add
しなければ生成されません。