Vagrantでboxイメージを作る
Vagrantで動いている仮想マシンのイメージファイルを作るには package サブコマンドを使います。
|
|
ここでは作られるboxファイルや推奨されるboxファイルの作り方について整理します。
フォーマット
作られるboxファイルはtar形式のアーカイブになっていて次のような構成でした。
|
|
metadata.json はプロバイダーなどの情報が含まれています。 Box File Formatによると、Boxファイルは旧形式らしくBoxのバージョニングや更新に対応できません。これらの機能のためにはBoxファイルと別にBox Metadataファイルが必要になります。 またBoxファイルにはBox Infoを含める事で vagrant box list -i に追加情報を提供できます。Boxファイルにファイルを追加で含めるには –include オプションでファイルを列挙します。
Boxファイルに含まれている Vagrantfile は仮想マシンを起動するとき(up)の最初に読まれます。 たとえば起動した時のネットワークを反映した初期化を施したりできます。
box.ovf はOVFディスクリプタです。 オープン仮想化フォーマット(OVF) | DMTFで仕様を確認できます。 xxx.vmdk ファイルはディスクイメージです。ここやこのpdfが詳しそうです。 公式の入り口はここしか見つけられていません。
作りかた
下の2つを確認してください。
- Creating a Base Box | Vagrant by HashiCorp
- Creating a Base Box - VirtualBox Provider | Vagrant by HashiCorp
いろいろとありますが、Vagrantではメモリもディスクも修正できるから適切なデフォルト値でユーザーに負担をかけない。USBなど使う事の少ないデバイスを設定しない。ネットワークの設定は起動のたびに変わるので udevのルールに気を付ける。 vagrant ユーザーがデフォルトで使われるので sudo やパスワードなど気を付ける。sshの鍵も登録する。あたりが大事そうでした。
おわりに
vagrant package で作られる box ファイルをきっかけに調べました。 中身のイメージもわいてきました。 次は Packer を使ってマシンイメージ作成をバージョン管理できるようにしておきたいと思います。