Vagrant up 突然构建了新的框并且无法识别旧的框

Vagrant up 突然构建了新的框并且无法识别旧的框

我们使用 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

相关内容