2014-01-10 5 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 

Когда я вспылить с бродягой вверх он выглядит на "диск" в C: \ HashiCorp \ Vagrant \ диск бин \

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, запустите команду vagrant up из cygwin. – Jepper

0

Параметр «диск» должен быть контуром, Virtualbox должен его хранить для второго диска.

Используйте абсолютный как "C: \ temp.disk" или "/tmp/disk.img"

+1

Не префикс пути с избыточными «./» либо - я видел проблему с „TMP/file.vdi“ по сравнению с './tmp/file.vdi', которые по сути являются одним и тем же файлом, но вызывают проблемы с createhd иногда duriong vagrant на чистой установке. –

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

'==> default:« Базовая база »не найдена. Попытка найти и установить ... 'и' Не удалось открыть файл/C:/Users/Chloe/workspace/project/base' – Chloe

+0

@Chloe заменить 'base' на любой бродячий базовый ящик, с которого вы хотите начать, например. 'debian/wheezy64' –

Смежные вопросы