首页 > 解决方案 > 如何移动 Vagrant 环境?

问题描述

“vagrant init:...通过创建初始 Vagrantfile 来创建 Vagrant 环境...”

我在 Windows 中将该文件夹从 E:/ 移动到 C:/,并且在尝试执行此操作时遇到了这个愚蠢的错误vagrant snapshot restore XXX

==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "7aff8d5d-7193-4f6d-966b-4076543c0e90", "--type", "headless"]

Stderr: VBoxManage.exe: error: RawFile#0 failed to create the raw output file E:/Proyectos/do-sf2-dev/ubuntu-xenial-16.04-cloudimg-console.log (VERR_PATH_NOT_FOUND)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

据我了解,VirtualBox 一直在引用 E:/ 驱动器。

我尝试手动编辑从 E:/ 到 C:/ 我可以在该文件夹下找到的任何引用,以及在相关机器的 VirtualBox GUI 中,但没有运气。

标签: windowsvagrantvirtualboxvagrantfile

解决方案


这个答案很晚,但希望能帮助下一个人遇到这个问题。该错误是因为机器配置为输出到不再存在的位置。将 Vagrant 环境移动到另一个驱动器时,除了移动 VM 文件之外,您还需要更新一些 Vagrant 元数据。您可以使用vagrant up --debug确切地查看错误所指的内容。

如果移动 .vagrant.d 目录,则需要将环境变量设置VAGRANT_HOME为新位置。在 Windows 上,您需要重新启动才能使其生效。如果这不起作用,请将以下内容之一添加到您的 vagrantfile 中:

  • v.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
    • 这将禁用串行输出到丢失的日志文件 (ubuntu-xenial-16.04-cloudimg-console.log)

或者

  • v.customize [ "modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "ubuntu-xenial-16.04-cloudimg-console.log") ]
    • 这将更新日志文件的路径以指向当前目录。

对于大多数 vagrant 设置,这应该足够了,但是,我还需要重新创建错误日志文件的路径,然后vagrant up才能成功运行。之后,我运行vagrant provision并能够毫无问题地删除旧文件路径。

这些帖子也很有帮助(参考):


推荐阅读