В Vagrant я пытаюсь использовать функцию для определения нескольких блоков. По какой-то причине, однако, невозможно установить память, передавая переменные, как у меня здесь, не имеет значения, если я использую ...
vb.memory = some_mem_var
или ...
vb.customize ["modifyvm", :id, "--memory", some_mem_var]
Вот пример, который работает, только если они не передаются как переменные, а значение mem вместо этого жестко запрограммировано.
def shared_config(host, setmemory = 2048, setcpu = 1, mac_string = 'none', disk = 'default', promisc = false)
host.vm.box = "bento/ubuntu-16.04"
host.vm.provider "virtualbox" do |vb|
# fix time sync threshold to 10 seconds. otherwise sleep on the host can cause time offset on wake.
vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
vb.gui = false
# Customize the amount of memory on the VM:
# this doesn't work-
vb.memory = setmemory
# neither does this-
# vb.customize ["modifyvm", :id, "--memory", setmemory]
vb.cpus = setcpu
if promisc == true
vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"]
end
end
end
Vagrant.configure("2") do |config|
setmemory=4096
setcpu=4
# config.vbguest.iso_path = "https://download.virtualbox.org/virtualbox/6.0.16/VBoxGuestAdditions_6.0.16.iso"
# config.vbguest.auto_update = false
config.vm.define "sysa", primary: true do |sysa|
shared_config(sysa, memory: 2048, cpus: 1, mac_string: 'none', disk: '65536MB', promisc: false)
end
config.vm.define "sysb" do |sysb|
shared_config(sysb, memory: setmemory, cpus: setcpu, mac_string: 'none', disk: '65536MB', promisc: true)
end
end
Это ошибка -
A customization command failed:
["modifyvm", :id, "--memory", {:memory=>1024, :cpus=>1, :mac_string=>"none", :disk=>"65536MB", :promisc=>false}]
The following error was experienced:
#<Vagrant::Errors::VBoxManageError: There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["modifyvm", "9262b024-1471-4a63-84c8-f970cdf997a8", "--memory", "{:memory=>1024, :cpus=>1, :mac_string=>\"none\", :disk=>\"65536MB\", :promisc=>false}"]
Stderr: Oracle VM VirtualBox Command Line Management Interface Version 6.0.16
(C) 2005-2020 Oracle Corporation
All rights reserved.
VBoxManage: error: >
Please fix this customization and try again.