multi-VMしている時のvbox snapshotプラグインに渡す引数

Vagrantではsaharaプラグインで簡単なスナップショットというかサンドボックスを作って、作ったり壊したりが一世代にかぎってカジュアルにできます。 しかし、普段、Virtual Boxを利用しているとスナップショットを撮っていきたいななんておもったりしてそれをVagrantで実現するプラグインも存在します。

そんなVagrantでVirtual Boxのスナップショットを実現するプラグイン、vbox-snapshotですがVagrantfileを使って作った複数のVMの片方のスナップショット撮るときにちょっとだけつまづいたのでメモです。

引数の順番

VMが一つだけの場合は以下のようにしてsnapshotを撮ります。

vagrant snapshot take "SNAPSHOT_NAME"

これでSNAPSHOT_NAMEという名前のスナップショットがとれます。 Vagrantfileで複数のVMが設定されている場合の引数の順番は以下の通りです。

vagrant snapshot take VM_NAME "SNAPSHOT_NAME"

とすることで、VMNAMEという名前のVMに対してSNAPSHOTNAMEという名前のスナップショットが撮られます。

VMの名前はどれか

ただ、VMの名前がどれか少しわかりづらかったりして、困っていました。 以下のようなVagrantfileの場合は

config.vm.define :vm_primary do |primary|
    primary.vm.box = "centos64"
    primary.vm.network "private_network", ip:"192.168.99.10"
    config.vm.provider "virtualbox" do |v|
        v.name = "Multi_vm_primary"
    end
end

config.vm.define :vm_secondery do |secondery|
    secondery.vm.box = "centos64"
    secondery.vm.network "private_network", ip:"192.168.99.20"
    config.vm.provider "virtualbox" do |v|
        v.name = "Multi_vm_secondery"
    end
end

'vm.define'の直後に書いた、vmprimaryやvmseconderyがvbox-snapshotのVMの名前になります。

vm_primaryのスナップショットを撮る場合は以下のようなコマンドになります。

vagrant snapshot take vm_primary "Initial install"

これでVirtualBoxにスナップショットが撮られました。