Vagrant - паравиртуализация "kvm" на версии VirtualBox ниже 5.0

У меня есть эти бродячие настройки ниже:

 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. Спасибо!

1 ответ

Решение

Возможно, есть лучшие способы сделать это, но один из них:

# -*- 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.

Другие вопросы по тегам