Vagrant VirtualBox第二个磁盘路径

时间:2014-01-10 17:21:12

标签: virtualbox vagrant disk provider

我有Vagrant + VirtualBox。

在我的Vagrantfile中我有

config.vm.provider "virtualbox" do |v|
    v.customize [ "createhd", "--filename", "disk", "--size", 100000 ]
    v.customize [ 'storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', "disk"]
end

当我向流浪汉开火时,它会查找“磁盘” C:\ HashiCorp \流浪\ BIN \磁盘

VBoxManage.exe: error: Could not find file for the medium 'C:\HashiCorp\Vagrant\bin\disk' (VERR_FILE_NOT_FOUND)

我希望磁盘与虚拟机的第一个磁盘一起存在 C:\ Users \ jma47 \ VirtualBox VMs \ bin_build_1389371691

如何在Vagrantfile中执行此操作?

3 个答案:

答案 0 :(得分:8)

如果您为虚拟机定义名称,则可以执行此操作:

Vagrant.configure(2) do |config|
  config.vm.box = "debian/wheezy64"

  config.vm.provider "virtualbox" do |vb|
    vb.name = "VM Name"

    # Get disk path
    line = `VBoxManage list systemproperties | grep "Default machine folder"`
    vb_machine_folder = line.split(':')[1].strip()
    second_disk = File.join(vb_machine_folder, vb.name, 'disk2.vdi')

    # Create and attach disk
    unless File.exist?(second_disk)
      vb.customize ['createhd', '--filename', second_disk, '--format', 'VDI', '--size', 60 * 1024]
    end
    vb.customize ['storageattach', :id, '--storagectl', 'IDE Controller', '--port', 0, '--device', 1, '--type', 'hdd', '--medium', second_disk]
  end
end

答案 1 :(得分:6)

你需要在你的Vagrantfile中使用这样的东西:

对于Vagrant API v1:

# Where to store the disk file
disk = 'C:\Users\jma47\VirtualBox VMs\bin_build_1389371691\extra_disk.vdi'

Vagrant::Config.run do |config|
  config.vm.box = 'base'

  config.vm.provider "virtualbox" do | v |
    unless File.exist?(disk)
      config.vm.customize ['createhd', '--filename', disk, '--size', 500 * 1024]
    end
    config.vm.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', disk]
  end
end

对于Vagrant API v2:

# Where to store the disk file
disk = 'C:\Users\jma47\VirtualBox VMs\bin_build_1389371691\extra_disk.vdi'

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = 'base'

  config.vm.provider "virtualbox" do | p |
    unless File.exist?(disk)
      p.customize ['createhd', '--filename', disk, '--size', 1 * 1024]
    end
    p.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', disk]
  end
end

答案 2 :(得分:0)

“disk”参数应该是路径,Virtualbox需要它来存储第二个磁盘。

使用绝对的“c:\ temp.disk”或“/tmp/disk.img”