1

我在下面有这个流浪设置:

 12     config.vm.provider "virtualbox" do |v|
 13       v.customize ["modifyvm", :id, "--memory", "256"]
 14       v.customize ["modifyvm", :id, "--cpus", "1"]
 15       v.customize ["modifyvm", :id, "--paravirtprovider", "kvm"]     #this should only be applied to LINUX guests
 16     end

在这个链接上找到了这个。

案例是,如果 VirtualBox 版本 >= 5.0,这肯定会起作用。但在 5.0 以下的版本上,应该会引发错误。

问题:我如何检查是否--paravirtprovider在 VirtualBox 版本中启用。如果可能的话,我希望这在 Vagrantfile 本身中完成。谢谢!

4

1 回答 1

2

可能有更好的方法来做到这一点,但一种方法是:

# -*- mode: ruby -*-
# vi: set ft=ruby :
vbox_version = `VBoxManage --version`

Vagrant.configure(2) do |config|
  config.vm.box = 'ubuntu/trusty64'
  config.vm.provider 'virtualbox' do |v|
    v.customize ['modifyvm', :id, '--memory', '256']
    v.customize ['modifyvm', :id, '--cpus', '1']
    if vbox_version.to_f >= 5.0
      v.customize ['modifyvm', :id, '--paravirtprovider', 'kvm']
    end
  end
end

vbox_version = `VBoxManage --version`必须在配置块之外发生,因为它需要在运行 vagrant 和 VirtualBox 的主机系统上执行。

于 2016-02-12T08:14:43.110 回答