将 Vagrant VM 存储在自定义文件夹中

2024-05-17

我想指定 Vagrant 将存储我的虚拟机的文件夹。

我只需要一台虚拟机,所以我不想修改 VirtualBox.xmldefaultMachineFolder或改变VBOX_USER_HOME环境变量。

在 Vagrantfile 中正确的做法是什么?

我已经尝试添加以下行:

config.vm.provider "virtualbox" do |vb|
   vb.customize ["createvm", "--name", "name", "--basefolder", "path"]
end

它在我指定的路径上创建 VM 文件夹,但也会将其复制到~/VirtualBox VMs文件夹并将错误的 VM 路径添加到 VirtualBox.xml。

我也尝试过使用组:

config.vm.provider :virtualbox do |vb| 
  vb.customize ["modifyvm", :id, "--groups", "/subpath"] 
end

但它只在目录中创建一个子文件夹~/VirtualBox VMs.

请帮忙!


这并不容易,但至少我学到了一些好东西。即使您没有找到您期望的答案,我也会将其作为答案。 (提前抱歉)

所以首先:

它在我指定的路径上创建 VM 文件夹,但它也复制它 在 ~/VirtualBox VMs 文件夹中并将错误的 VM 路径添加到 VirtualBox.xml。

是的,默认情况下,当你在 vagrant 输出中看到类似的内容时

==> default: Importing base box 'ubuntu/trusty64'...

在幕后,流浪者运行类似VBoxManage import ....所以如果你还定义了createvm属性,除了 vagrant box 导入之外,它还会运行它,因此它会创建重复项。注意设置的属性provider块不会覆盖默认块,而是在默认块之后运行。

流浪汉就是这样VBoxManage import .... --disk /path;从 VBoxManage 运行时,可以轻松更改磁盘指定路径并将 VM 文件保存在任何位置。

然而当你看流浪代码在这里 https://github.com/mitchellh/vagrant/blob/master/plugins/providers/virtualbox/driver/version_5_0.rb#L272它需要的输出target path运行时的属性VBoxManage import -n /path_to_your_box_ovf_file它从那里构建路径所以对于任何虚拟机来说它将是相同的路径文件夹.

因此,除了您已经提到的方法之外,要定义您可以使用的路径VBoxManage setproperty machinefolder https://www.virtualbox.org/manual/ch08.html#vboxmanage-setproperty

VBoxManage setproperty machinefolder /my_custom_path
vagrant up
VBoxManage setproperty machinefolder default

VM 文件将在您的 custom_path 文件夹中创建,然后您将 VM 文件夹重新初始化到其默认位置。 (我没有尝试,但由于 Vagrantfile 是一个 ruby​​ 脚本,你甚至可以运行VBoxManage setproperty来自 Vagrantfile)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Vagrant VM 存储在自定义文件夹中 的相关文章

  • V100 和 P100 在 Google Compute Engine 上的可用性

    描述 我刚刚尝试了一段时间 使用我的个人帐户设置或保留用于机器学习的虚拟机 我在 n1 上使用了几个月 具有大约 8 GB 或更多 GB RAM 以及用于机器学习的 P100 或 V100 现在尝试了至少一半具有 P100 V100 可用性
  • Ansible Expect 模块无法匹配字符串/正则表达式脚本问题

    我正在尝试通过 Ansible 在 Vagrant 机器中自动安装脚本 我尝试了很多方法在网络上寻找解决方案 但文档和示例非常薄弱 我试图安装的脚本提示了我试图以编程方式回答的问题Ansible 期望模块 Ansible 任务 名称 运行
  • 在虚拟机共享目录上运行“grunt”

    将 Vagrant 与 Windows 主机和 Linux 客户机一起使用 grunt尝试运行作业时返回以下错误 据我了解 在主机 来宾共享目录中 此文件路径超出了 Windows 的 255 个字符限制 npm ERR Error EPE
  • 如何启用 Genymotion 模拟器使用主机正在使用的 WIFI 互联网

    我在 Genymotion 模拟器上运行的应用程序需要互联网 互联网似乎无法在 Genymotion 模拟器上运行 我试图通过打开浏览器来确认这一点 这就是我得到的 我在我的笔记本电脑上运行 Windows 7 并使用 Wifi 互联网 我
  • Vagrant 提供,无法启动 grunt

    我正在尝试让 vagrant 安装 nodejs 正常运行所需的所有内容 然后在节点项目的根文件夹上执行 nohup grunt server 之后 我期望服务器在端口 3030 上侦听 但事实并非如此 如果在配置后我这样做 流浪者 ssh
  • 使用 Vagrant,为什么 puppet 配置比自定义打包盒更好?

    我正在创建一个虚拟机来模仿我们的生产 Web 服务器 以便我可以与新开发人员共享它 让他们尽快上手 我已经阅读过 Vagrant 文档 但是我不明白使用通用基础盒并使用 Puppet 配置所有内容与打包已安装和配置所有内容的自定义盒相比有何
  • 如何在CentOS7中更改docker守护进程根目录

    我在 CentOS7 上运行 docker 我想更改我的基本目录 var lib docker to data docker I found this https docs docker com engine reference comma
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 仅在配置时才在 Vagrantfile 中运行代码

    我想在运行时在屏幕上显示一些文本vagrant up or vagrant provision etc 当且仅当正在配置 为了vagrant up它仅在第一次运行 或者如果特别强制 provision 如何才能做到这一点 添加 shell
  • 如何在虚拟机 VirtualBox 上运行 Android-x86 4.2 iso?

    我想用Android x86测试和调试我的应用程序 我之前成功尝试过其他版本的Android x86 但是关于android x86 4 2有一个错误 所以我在这里问我的问题 因为它可能会发生在其他人身上 我安装了oracle VM vir
  • 在哪里可以找到config.vm.boot_timeout?

    您好 我想编辑 vagrant 中的 config vm boot timeout 因为我在启动 vagrant 时遇到问题 我在哪里可以找到 config vm boot timeout 我应该输入什么值 我在windows8 1 x86
  • Ansible bitbucket 克隆存储库配置 ssh 错误

    我之前发布过这个问题 但那里的答案不再有效 总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 权限被拒绝 公钥 然而 如果
  • Docker 教程入门第 4 部分连接被拒绝

    我不明白我错过了什么 docker compose yml version 3 services web replace username repo tag with your name and image details image sv
  • Laravel/Homestead - OSX - Vagrant 连接超时

    Problem 我正在尝试让 Laravel Homestead 在我的 Mac Book Air 上运行 我已按照以下指示进行操作http laravel com docs 4 2 homestead http laravel com d
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • 如何在公网访问Vagrant Box

    我在 vagrant 内的 e box 上创建了 在 Vagrantfile 中 我将网络指定为 Create a private network which allows host only access to the machine u
  • Vagrant + Chef:配置错误“虚拟机上缺少 Chef 所需的共享文件夹。”

    我已经使用 Chef library Chef 安装了 Vagrant Virtualbox 当我做vagrant up第一次 食谱被正确加载 但是 当我事后进行配置时 无论是vagrant provision vagrant reload
  • Docker Desktop 未安装,提示 docker-ce-cli 无法安装

    在一次在线培训课程中 讲师提到他有 安装了 Docker Desktop 的 Ubuntu 虚拟机 因此 我尝试在 Windows 10 物理主机上安装相同的程序指示 https docs docker com desktop linux
  • adb 今天无法连接到 VirtualBox 中的 Android-x86

    我在 VirtualBox 中成功安装了 Android x86 v3 2 eeepc 一段时间 这是帮助我在 Android 上调试 USB 主机应用程序的好方法 此类配置的安装是 安装VirtualBox 将 Android x86 v
  • Vagrant Berkshelf - 架子路径?

    是否可以设置 berkshelf 插件放置其安装的说明书的路径 如在 berkshelf 文件夹中 我运行的是 Windows 7 我目前正在尝试使用 opscode 说明书将 mysql 服务器安装到虚拟机 并且在工作中他们将 HOMED

随机推荐