もふもふ技術部

vagrantのboxとか、vagrantコマンド周りがよくわからなくなった


vagrantをいじっているんですが、boxとは一体何なのか、vagrant destroyやhaltコマンドはどうゆう挙動になるのかちょっとわかんなくなってきたので整理してみる。

かなり初歩的でアレですが。

環境
Mac OSX 10.8 Lion
veeweeで自作した.boxファイルを使う(CentOS 6.4)

いろんなパターンを試してみる

まずは適当に叩いてみる。

vagrant boxコマンドのサブコマンドがわかる。

vagrant box listで既にbox addされているものを一覧表示出来るみたい。まだ何もaddしていない場合は下記みたいになる。

直接VirtualBoxを起動してみる。
まだ何もないのがわかる。
vagrant_01

ひとまず自前のboxをaddしてみます。

この時点ではVirtualBoxの画面に変化はありませんが、boxは正しくaddされているようです。

どうやらaddされたboxは ~/.vagrant.d/boxes に展開されているみたいです。OSのイメージもここに保存されているみたいなので、オリジナルの.boxファイルとは独立するみたい。なのでbox addした後は.boxファイルは不要になります。

Vagrantfileを作ります。これでcentosというboxを使用する設定のVagrantfileが出来上がります。

VMを起動します。

VirtualBoxのVM情報が増えました。
vagrant_02

どうやらVagrantfileがあるディレクトリ名がVitualBox上でのVM名になるみたい。VagrantfileごとにVMを管理するということなのか。

ちょっと検証するために、VM上にtestfileというファイルを作成しておきます。

別のVMを作ります。
今度はbox addせずにいきなりvagrant initしてみます。

先にbox addした場合と違い、config.vm.box_urlというプロパティが有効になっていますが、vagrant upした際に自動的にbox addされ、結果的にはどっちの場合も同じ状態になります。

testfileがないことを確認。これでオリジナルの.boxファイルとは関係なく、別々のVMが起動していることが確認出来ましたね!

box listを確認。centos2が追加されていますね。

VirtualBoxにもVMが追加されています。
vagrant_03

続いて、仮想マシンを削除してみます。

VirtualBoxからVMが削除されてます。
vagrant_04

破棄されたのはVMであって、boxではありません。なのでboxは残ります。

どうやらぼくはこの辺で混乱してたみたいです。boxはあくまでもOSのイメージで、VMはboxから生成されているけどboxそのものとは独立しているもの、ということなのか。言葉だけだとわかりづらいですけど。

vagrantコマンドのhaltとかdestroyとか

続いてvagrant haltとvagrant destroyの違いあたりを確認します。

既に起動しているVMを停止させます。

VirtualBox上では「電源オフ」となっています。シャットダウン状態と考えていいっぽい。
vagrant_05

再度起動します。

シャットダウンして再び起動しただけなので、当然testfileがありますね。

続いてVMを破棄してみます。先程同様VirtualBox上からも消えます。

再びvagrant upしてみます。

testfileがなくなりました。つまりbox addした時点の状態に復元されているわけですね。

余計なものが入っていないOSの標準の状態でbox addしておいて、あとはVM立ち上げてそれぞれ個別の設定を施していくっていう感じの使い方でいいのかな。なんだ理解してしまえば全然シンプルな仕組みじゃん。

ちなみに、VMを生成すると ~/VirtualBox VMs 配下にVMごとのディレクトリが作られるみたい。

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。