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%
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