我希望触发器(通过vagrant-triggers
plugin)仅对Virtualbox提供程序有效。在这种情况下,应从计算机配置中删除第二个虚拟磁盘。以下是我Vagrantfile
的摘录:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider "virtualbox" do |vb, override|
# Use VBoxManage to customize the VM. For example to change memory:
vb.customize ["modifyvm", :id, "--memory", "1536"]
override.trigger.after :halt, :append_to_path => ENV["VBOX_INSTALL_PATH"] do
run "VBoxManage storageattach " +
File.read(".vagrant/machines/default/virtualbox/id") +
" --storagectl SATA --port 1 --medium none"
end
end
end
在上面的例子中,我可以在设置内存大小时使用:id
来引用机器ID;但我只在this answer找到冒险的黑客来获取after
触发器中的机器ID。
似乎我只能在触发器定义中使用run
方法,调用customize
不起作用。有没有更好的方法来访问触发器中的机器ID?
答案 0 :(得分:1)
正如ticket solution中所述,您可以使用@machine.id
。一个例子:
config.trigger.after :halt do
info "Machine ID: #{@machine.id}"
end