如何在Vagrant上获取VM的目录

问题描述 投票:0回答:1

我需要在我的VirtualBox VM上创建一些额外的磁盘,具体取决于一些外部配置,但这些磁盘必须是自包含的,我的意思是在VM的目录下。我成功了但是,强制VM名称(使其可预测),但是,由于某些限制,我无法在我的环境中强制使用该名称。有些人会同时在不同的分支和不同的目录中工作,强迫这个名称对于这个特定情况不是一个好主意,它需要是动态的。任何解决这个问题的想法都将非常感激。

Vagrant.require_version ">= 1.9.7"

Vagrant.configure('2') do |config|

  config.vm.define "mylinux-vm", autostart: false do |this|

    this.vm.box = "ubuntu/xenial64"
    this.vm.hostname = "my-linuxvm"
    this.vm.provider :virtualbox do |vb|
      vb.memory = 2048; 
      vb.cpus = 2

      # What is the directory where this VM is going to be created?
      # I need to create other disk files under the VM directory
      # is going to be something like:
      #    $HOME/VirtualBox VMs/<current_dir_name>_mylinux-vm_<timestamp>
      # How can I get this directory?
    end
  end
end
ruby vagrant virtualbox provisioning vagrantfile
1个回答
1
投票

您可以通过执行以下操作来设置该文件夹的名称,并在Vagrantfile中引用它:

vb_memory = 2048
vb_cpus = 2
vb_name = "mylinuxvm-foobar-mem#{vb_memory}-cpu#{vb_cpus}"

...

this.vm.provider :virtualbox do |vb|
  vb.memory = vb_memory; 
  vb.cpus = vb_cpus
  vb.name = vb_name  
  # Setting the above would create a directory like this : 
  # $HOME/VirtualBox VMs/mylinuxvm-foobar-mem2048-cpu2
end

这将使文件夹的名称保持唯一,您也可以在整个Vagrantfile中将其引用为vb_name

© www.soinside.com 2019 - 2024. All rights reserved.