Vagrant 在不丢失原件的情况下,从单机切换到多台

Vagrant 在不丢失原件的情况下,从单机切换到多台,vagrant,Vagrant,我有以下流浪汉: Vagrant.configure(2) do |config| config.vm.box = "ubuntu/xenial64" config.vm.network "forwarded_port", guest: 8000, host: 8080 config.vm.network "forwarded_port", guest: 8001, host: 8081 config.vm.synced_folder "../..", "/home/edgl

我有以下流浪汉:

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/xenial64"

  config.vm.network "forwarded_port", guest: 8000, host: 8080
  config.vm.network "forwarded_port", guest: 8001, host: 8081

  config.vm.synced_folder "../..", "/home/edgleweb"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4000"
    vb.cpus = 2
  end

  config.vm.provision "shell", path: "./provisioner.sh", args: "edgleweb" #, run: "always"
end
我的虚拟机在开发中遇到了一些问题。我想在
框更新后旋转另一个精确副本。我不想复制和粘贴文件夹,因为这违反了干燥原则。Vagrant文档要求多机设置,如下所示:

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: "echo Hello"

  config.vm.define "web" do |web|
    web.vm.box = "apache"
  end

  config.vm.define "db" do |db|
    db.vm.box = "mysql"
  end
end

但我确实希望在完全测试新VM之前保持初始VM的完整性。我不想失去它。从文档中看不出我是如何保存它的。如何保存它?

您可以使用
vagrant snapshot
命令和
save
push
子命令来实现这一点。请参阅文档。

似乎是单机设置中的一个名为“默认”的功能,这似乎是一个很棒的功能!威廉·范·凯特维奇:你知道摧毁一台机器是否也会删除它的快照吗?如果是,如何在不销毁旧快照的情况下启动新快照?是的,它也会销毁快照。你可以复制整个文件夹,删除.vagrant文件夹,然后调用vagrant打开新文件夹。如果可能的话,这就是我试图避免的。如果修改vagrant文件,你不需要销毁vm。您应该能够运行vagrant reload,它将从vagrant文件重新运行实例和网络配置。