我们使用 vagrant 和 puppet 来设置测试环境,这很合理。但有时会出现奇怪的现象。在某人构建了一个新框并使用了一段时间后,vagrant up 会突然忽略现有框并创建一个新框。
这很烦人,因为盒子其实没问题。我该如何将旧盒子重新分配给我的 vagrant 文件。
答案1
当 VirtualBox 无法报告有关机器的信息时,有时会发生这种情况。新版本的 Vagrant 会尝试多次获取信息,但我想这仍然是可能的。
映射在.vagrant
项目目录中完成。例如,在正常的单虚拟机设置中,机器的 UUID 存储在 中.vagrant/machines/default/virtualbox/id
。您可以使用 获取现有 VirtualBox 虚拟机的列表VBoxManage list vms
。
答案2
我发现当你在 Vagrantfile 中将未命名配置更改为命名配置时会发生这种情况。例如,如果你将 VagrantFile 从
Vagrant.configure(2) do |config|
config.vm.provision :shell, :path => "vagrant/install.sh"
end
到
Vagrant.configure(2) do |config|
config.vm.define "dev" do |dev|
dev.vm.provision :shell, :path => "vagrant/install.sh"
end
end
然后vagrant reload
,vagrant 将不再关注以前未命名的配置现在已被命名的事实dev
,并且将被视为dev
一个全新的 VM(即使它也是 Vagrantfile 中的默认且唯一的 VM)。
您可以:
- 手动销毁旧虚拟机(例如打开 VirtualBox 并将其删除);或者
- 将您的 Vagrantfile 改回,
vagrant destroy
然后将 Vagrantfile 向前滚动并vagrant up
。