vagrant が内部的にVMを管理するためのVM名(以下、vagrant名とする)を変えたい場合の方法

vagrant status したときとかに出てくる名前のこと。以下の場合の"hoge"。

# vagrant status                                                                                                                                                       
Current machine states:

hoge       running (virtualbox)

これは Vagrantfile 内で以下のように定義できる。

onfig.vm.define 'hoge' do |host| ・・・

イマイチな名前をつけちゃった場合に変えたくなることがある。
簡単なのはVMを作り直す方法(destroy -> Vagrantfile修正 -> up)。
しかし、今のVMを消したくない場合もあるかも。
そういった場合の対処法を調べた(ちょい面倒)。
hoge -> fuga と変更する。

① 変更対象のVMvagrant halt。
vagrant halt hoge
② Vagrantfile の config.vm.define の名前を書き換える。
onfig.vm.define 'hoge' do |host| ・・・

onfig.vm.define 'fuga' do |host| ・・・
vagrant.d 配下のディレクトリ名変更。

[VagrantfileのDir]/.vagrant/machines/配下のvagrant名のディレクトリをリネーム。

mv .vagrant/machines/{hoge,fuga}
vagrant index の編集。

${HOME}/.vagrant.d/data/machine-index/index
を編集。
(ちなみにこのファイル、古いバージョン(1.4.3とか)だと存在しない様子。これを作るようになったから vagrant global-status とか使えるようになったのかな?)

    "4305c1ef994449b6ae9483314a90915f": {
      "local_data_path": "/root/test/.vagrant",
      "name": "hoge",
      "provider": "virtualbox",
      "state": "poweroff",
      "vagrantfile_name": null,
      "vagrantfile_path": "/root/test",
      "updated_at": null,
      "extra_data": {
        "box": {
          "name": "bf_backend",
          "provider": "virtualbox",
          "version": "0"
        }
      }
    },

みたいなエントリがあるので、
"name": "hoge"

"name": "fuga"
に変更。

VirtualBoxVM名を変更。
VBoxManage modifyvm test_hoge_1421298836461_89800 --name test_fuga_1421298836461_89800