2014-01-10 88 views
4

我有Vagrant + VirtualBox。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 

當我與無業遊民了它尋找 「盤」 在 丙火了起來:\ 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

我該如何在Va grantfile?

回答

7

如果您爲虛擬機定義名稱,則可以執行此操作:

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 
+0

有沒有機會讓默認的機器文件夾可移植,也就是在Windows上工作? –

+1

要在Windows中使用它,請從cygwin運行vagrant up命令。 – Jepper

0

「磁盤」參數應該是一個路徑,Virtualbox需要它來存儲第二個磁盤。

使用絕對的,如 「C:\ temp.disk」 或 「/tmp/disk.img」

+1

請勿爲路徑添加多餘的'./'前綴 - 我看到'tmp/file.vdi'的問題與'./tmp/file.vdi',這些文件基本上是相同的文件,但是會導致createhd偶爾在乾淨的安裝過程中出現問題。 –

6

您需要使用這樣的事情在你的Vagrantfile:

對於流浪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 

對於流浪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 
+1

對於那些在這裏徘徊的人來說,'SATA Controller'會根據機箱/操作系統的預期而改變。 'SATA'是另一種常見選項。 – nelsonda

+0

'==>默認值:找不到框'base'。試圖找到並安裝...'和'無法打開文件/ C:/用戶/ Chloe /工作區/項目/基地 – Chloe

+0

@Chloe替換'基地'無論你想從哪個流浪基地箱,例如。 'debian/wheezy64' –

相關問題