- 更新
2013-07-30
- バージョン
0.1.1
- 作者
@voluntas
- URL
Vagrant は最初、 VirtualBox を簡単にコマンドラインから扱うもでした。 しかし 最近では VMware Fusion に対応したり、EC2 に対応したりと色々出来るようになっています。ただここではあくまで VirtualBox と限定することにします。
コマンドもとてもシンプルですし、設定もかなりシンプルです。覚えて損の無いツールだと思います。
開発/検証環境を共有する際にサーバを立てるまでも無い場合はローカルで Vagrant(VirtualBox) がよさそうです。
- Mac OS X
10.8.4
- Vagrant
1.2.7
- VritualBox
4.2.16
- Vagrant
http://files.vagrantup.com/packages/7ec0ee1d00a916f80b109a298bab08e391945243/Vagrant-1.2.7.dmg
- VirtualBox
http://download.virtualbox.org/virtualbox/4.2.16/VirtualBox-4.2.16-86992-OSX.dmg
主に使うのは以下の4つです。
- vagrant init <box 名>
- Vagrantfile を生成する
- vagrant up
- Vagrantfile に書かれている設定でインスタンスを起動する
- vagrant halt
- Vagrantfile に書かれているインスタンスを停止する
- vagrant destroy
- Vagrantfile に書かれているインスタンスを削除する
Vagrantfile については後ほど説明します。
ただ、一番最初に覚える必要があるのは上記のコマンドではありません。 インスタンス生成のために使うベースの box と呼ばれるテンプレートを用意する必要があります。
これは最終的には自分で作るのが理想ですが、まずは拾ってくることにします。 拾ってくるときの注意点ですが、変なところからは拾わないのが無難でしょう。
$ vagrant box add <path>
path はローカルでも http でも大丈夫です。これを使うことで ~/.vagrant に box がキャッシュされます。 一度キャッシュされたら他の box を使わない限りは box コマンドを使うことはありません。
この作業がおわったら次は環境構築のためのフォルダ作りです。1 Vagrantfile に付き 1 インスタンスなのでフォルダを分けていく必要があります。
例:
~/vagrant/<プロジェクト名>/
プロジェクト名をここでは spam としましょう。
~/vagrant/spam/
- box の削除は vagrant box remove <box name> で出来ます。
- box の一覧は vagrant box list で取得可能です。
ここで使う box はすでにキャッシュ済みだとします。
その場合は vagrant init <box 名> で Vagrantfile を生成します。 ここでは centos という box を使うことにします。
$ vagrant init centos
Vagrantfile が生成されます。色々設定は出来ますがまずは起動してみましょう。
インスタンスを起動するには vagrant up コマンドを使います。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'centos64'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Fixed port collision for 22 => 2222. Now on port 2200.
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2200 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /spam
インスタンスが起動したら。さっそくログインしてみましょう。 ログイン出来れば以下のような表示になるはずです。
$ vagrant ssh
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$
抜けるには exit で抜けられます。このインスタンスの状態を見るときは vagrant status コマンドを使います。
$ vagrant status
Current machine states:
default running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
Vagrantfile を変更したときなどに使う再起動のコマンド vagrant reload を使ってみましょう。
せっかくなので Vagrantfile を編集してみます。 プライベートネットワークが持てるように変更してみます
Vagrantfile の変更:
config.vm.network :private_network, ip: "192.168.33.20"
$ vagrant relaod
[default] Attempting graceful shutdown of VM...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /spam
$ vagrant ssh
Last login: Mon May 6 15:33:01 2013 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ ifconfig | more
eth0 Link encap:Ethernet HWaddr 08:00:27:C9:39:9E
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fec9:399e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:459 errors:0 dropped:0 overruns:0 frame:0
TX packets:365 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:42074 (41.0 KiB) TX bytes:34144 (33.3 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:65:F0:36
inet addr:192.168.33.20 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe65:f036/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:1082 (1.0 KiB)
無事 eth1 として NAT が追加されていることが確認出来ます。
インスタンスを停止するには vagrant halt コマンドを使います。
$ vagrant halt
[default] Attempting graceful shutdown of VM...
vagrant destory --force で強制終了が出来ます
インスタンスの再起動は vagrant reload ですが、ここではインスタンスを削除してみましょう。 vagrant destroy コマンドを使います。本当に削除するかどうかを確認してきます。
$ vagrant destroy
Are you sure you want to destroy the 'default' VM? [y/N] y
[default] Destroying VM and associated drives...
vagrant destory --force で強制削除が出来ます
便利なコマンドとして vagrant ssh-config コマンドがあります。 普通に ssh してログインします。--host を指定することでデフォルトの default から変更が出来ます。
$ vagrant ssh-config --host spam >> ~/.ssh/config
$ ssh spam
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$
また停止と起動以外にも vagrant suspend と vagrant resume コマンドがあります。これは仮想インスタンスのサスペンドとレジュームそのままです。
起動しっぱなしだと CPU や色々食べてしまいます。個人的には halt してしまった方がいい気がしますが ... 。そのためこれらのコマンドはあまり使ってないです。
$ vagrant suspend
[default] Saving VM state and suspending execution...
$ vagrant ssh
VM must be running to open SSH connection. Run `vagrant up`
to start the virtual machine.
$ vagrant resume
[default] Resuming suspended VM...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
$ vagrant ssh
Last login: Mon May 6 15:19:15 2013 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$
vagrant plugin というコマンドがあります。これはその名の通りプラグインが追加できます。 私が使ってるプラグインは一つだけですがこちらを実際にインストールして使ってみましょう。
vagrant plugin install <plugin name> でインストールできます。 コマンドを追加する形式の場合は vagrant のコマンド一覧に追加されます。
今回の場合は list コマンドが追加されています。
$ vagrant plugin install vagrant-list
Installing the 'vagrant-list' plugin. This can take a few minutes...
Installed the plugin 'vagrant-list (0.0.6)'!
$ vagrant
Usage: vagrant [-v] [-h] command [<args>]
-v, --version Print the version and exit.
-h, --help Print this help.
Available subcommands:
box
destroy
halt
init
list
package
plugin
provision
reload
resume
ssh
ssh-config
status
suspend
up
For help on any individual command run `vagrant COMMAND -h`
$ vagrant list
ALL:
6147d590-dfbc-4439-afa1-d1f788fa7aa8: vagrant_1367853370 (Red Hat (64 bit))
RUNNING:
6147d590-dfbc-4439-afa1-d1f788fa7aa8: vagrant_1367853370 (Red Hat (64 bit))
この vagrant list コマンドは VirtualBox に存在するインスタンスの一覧を取得してくれます。 実際は VirtualBox を起動すればいいのですが、コマンドから簡単に取得できるようにするツールです。
残念なのは VMware Fusion など他のタイプには対応していません。
VirtualBox にはスナップショット機能があります。
それを vagrant コマンドから気軽に使えるようにするのがこのプラグインです。
vagrant 1.1 以上に対応しています。
# スナップショットを名前を指定して取得します
$ vagrant snapshot take <name>
# 一番最新のスナップショットに戻します
$ vagrant snapshot back
# スナップショット一覧を表示します
$ vagrant snapshot list
# スナップショットを削除します
$ vagrant snapshot delete <name>
# 指定したスナップショット(名前)に戻します
$ vagrant snapshot go <name>
かなり気軽に使えますので是非つかってみてください。