Vagrantプラグインの使い方(vbguest, hostmanager, sahara, snapshot)

スポンサーリンク

Vagrantには使うと便利になるプラグインがいくつかあります。今回は vbguest, hostmanager, sahara, snapshot の4種類の使い方を紹介したいと思います。

Vagrantプラグインのコマンド

Vagrantプラグインに関するコマンドは以下の通りです。

コマンド 機能
vagrant plugin install <name> インストール
vagrant plugin uninstall <name> アンインストール
vagrant plugin update [names...] アップデート(名前を省略した場合は全て)
vagrant plugin list プラグイン一覧

vagrant-vbguest

VirtualBox 用の Box には、以前 Box の作成方法でも書いたように VirtualBox Guest Addition がインストールされています。 VagrantのBoxを新しく作成する方法(VirtualBox / CentOS 6.6 x86_64) そのため、vagrant-vbguest のプラグインをいれておけば、自分の環境の VirtualBox のバージョンと Box にインストールされている Guest Addition のバージョンが違う場合に、VirtualBox のバージョンに合わせて最新化してくれるというものです。

インストールは以下のコマンドです。

$ vagrant plugin install vagrant-vbguest

デフォルトでは仮想マシンを起動した段階でバージョンが古ければ更新されるようになってます。

$ vagrant up
...
==> default: Machine booted and ready!
GuestAdditions versions on your host (4.3.28) and guest (4.2.0) do not match.
...

以下の設定をしておく事で自動更新を無効にできます。

$ vi ~/.vagrant.d/Vagrantfile
Vagrant.configure("2") do |config|
    config.vbguest.auto_update = false
end

起動しているマシンに対して--statusオプションでバージョンの相違が確認できます。

$ vagrant vbguest --status
GuestAdditions versions on your host (4.3.28) and guest (4.2.0) do not match.

更新したい場合は--do installを実行します。また、更新が終わっても仮想マシン上の更新した Guest Addition は読み込まれてないので、--do startで起動してください。

$ vagrant vbguest --do install   # インストール
$ vagrant vbguest --do start   # 起動

その他のコマンドはvagrant vbguest --hか、GitHubのREADME参照してください。

 dotless-de/vagrant-vbguest · GitHub

vagrant-hostmanager

Vagrant host manager は作成した仮想マシンとホストPCの/etc/hostsを自動で書き換えてくれるプラグインです。インストールは以下のコマンドになります。

$ vagrant plugin install vagrant-hostmanager

基本的な使い方としてはVagrantfileにホスト名とIPアドレスを以下のように設定して起動します。

config.vm.network "private_network", ip: "192.168.33.99"
config.vm.hostname = "vm-node"

デフォルトでは起動するだけでは/etc/hostsに書き込まれませんので、vagrant hostmanagerを実行してみましょう。

仮想マシンの/etc/hostsが以下のように更新されます。

## vagrant-hostmanager-start
192.168.33.99   vm-node
## vagrant-hostmanager-end

vagrant up時に自動的に hostmanager を実行したい場合は Vagrantfile に次の設定をしておきます。

config.hostmanager.enabled = true

または
config.hostmanager.enabled = false
config.vm.provision :hostmanager

ここまででは仮想マシンのみでしたので、ホストPCの/etc/hostsも更新したい場合は次の設定を追加します。

config.hostmanager.manage_host = true

これでホストPCにも以下のように更新されます。

## vagrant-hostmanager-start id: 8f592502-f6d2-4080-8c5b-e0d020e50caa
192.168.33.99 vm-node
## vagrant-hostmanager-end

複数のホスト名を設定したい場合は aliases を使用します。

config.hostmanager.aliases = %w(vm-node1 vm-node2 vm-node3)

以下のようになります。

## vagrant-hostmanager-start
192.168.33.99   vm-node vm-node1 vm-node2 vm-node3
## vagrant-hostmanager-end

 smdahlen/vagrant-hostmanager · GitHub

vagrant-sahara

vagrant-sahara は仮想マシンの状態をロールバック機能で実行前の状態に戻すことができるモード(sandboxモード)に変更できるプラグインです。これを使用することで、Chef や ミドルウェアのインストール、環境の変更などを試しやすくなり非常に便利です。

ただし、Provider に VirtualBox を利用している時のみ使用できます。インストールは以下のコマンドになります。

$ vagrant plugin install sahara

sandboxモードを開始します。

$ vagrant sandbox on
[default] Starting sandbox mode...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

sandboxモードになっているか確認します。

$ vagrant sandbox status
[master] Sandbox mode is on

実際に変更を加えてみます。

$ vagrant ssh
$ touch hoge.txt
$ ll
-rw-rw-r-- 1 vagrant vagrant 0  7月 11 16:26 2015 hoge.txt

変更を無かった事にして状態を元に戻します。

$ vagrant sandbox rollback
[default] Rolling back the virtual machine...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
...
$ vagrant ssh
$ ll
合計 0

変更を恒久的に反映したい場合は commit を使用します。

$ vagrant sandbox commit
[default] Committing the virtual machine...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

sandboxモードを終了します。off には commit の動作も含まれてるみたいなので、変更を無かった事にしたい場合は必ず先に rollback を実行しましょう。

$ vagrant sandbox off
[default] Stopping sandbox mode...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 jedi4ever/sahara · GitHub

vagrant-vbox-snapshot

仮想マシンのスナップショットを管理するプラグインです。基本はVirtualBox上でスナップショットを取得するのと同じですが、Vagrantのコマンドで実行できることによって管理しやすくなっています。インストールは以下のコマンドになります。

$ vagrant plugin install vagrant-vbox-snapshot

スナップショットを取得します。

$ vagrant snapshot take 20150711
Taking snapshot 20150711
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

スナップショットの一覧を確認します。

$ vagrant snapshot list
Listing snapshots for 'default':
   Name: 20150711 (UUID: f00bd0a9-3d41-482a-bb4c-cf1edfad4582) *

スナップショットの復元は2種類あり、snapshot backの場合は直近に取得したスナップショットから復元し、snapshot go <snapshot_name>の場合は任意のスナップショットを復元します。

$ vagrant snapshot back
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Restoring snapshot f00bd0a9-3d41-482a-bb4c-cf1edfad4582
Starting restored VM
...
$ vagrant snapshot go 20150711
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Restoring snapshot f00bd0a9-3d41-482a-bb4c-cf1edfad4582
Starting restored VM
...

スナップショットを削除します。

$ vagrant snapshot delete 20150711

 dergachev/vagrant-vbox-snapshot · GitHub

関連記事

 MacでのVagrantの使い方とコマンドについて(VirtualBoxに仮想マシンを作成) - TASK NOTES

 VagrantのBoxを新しく作成する方法(VirtualBox / CentOS 6.6 x86_64) - TASK NOTES

 Packerを使用してVirtualBoxの仮想マシンからVagrantのBoxを作成する - TASK NOTES

 VagrantのプロビジョニングをChef-Soloで実行する方法(Berkshelf + knife-solo使用) - TASK NOTES