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
Когда я запускаю vagrant up, он ищет "диск" в C:\HashiCorp\Vagrant\bin\disk
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 ответа
Решение
Это можно сделать, если вы определите имя для виртуальной машины:
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
Вам нужно использовать что-то вроде этого в вашем 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
Параметр "диск" должен быть путем, Virtualbox нуждается в нем для хранения второго диска.
Используйте абсолютный, такой как "c:\temp.disk" или "/tmp/disk.img"