Vagrant+Virtualbox 踩坑 闪退&【No usable default provider could be found for your system.】

今天打算配置一个Vagrant+Virtualbox运行环境,然而各种坑

1.下载Virtualbox

地址:https://www.virtualbox.org/wiki/Downloads
image.png

我安装的是widows版本的
安装好后直接运行

1.下载Vagrant

地址:https://www.vagrantup.com/downloads.html
image.png

同样是windows版本

安装好后就开始入坑了

坑1 vagrant运行

由于第一使用vagrant 之前看的教程也都是直接接输入vagrant命令了,所以以为入口就是vagrant.exe
然后就是点击vagrant.exe后各种闪退,闪退到怀疑人生。一波搜索,查到结果
vagrant正确的打开方式是通过cmd

image.png

输入
vagrant --help

image.png

可以看到vagrant支持的命令
输入
vagrant -v
查看版本号
image.png

坑2 windows命令

由于长期的使用linux服务器滚瓜烂熟了linux命令,回到windows就是傻眼了,我的vagrant安装在E盘,于是我想跳转到E盘我的安装目录下去创建文件夹
于是我这样做


image.png

然后没有任何反应
然后还有什么ll
这里说下正确的命令

1.进入目录直接输入盘   如:  E:  然后回车
2.查看目录下现有文件  dir 命令
3.创建新的文件夹  方法1   md +文件夹名   方法2   mkdir + 文件夹名称
4.进入目录中的文件夹   cd 文件夹名
image.png

至于如果需要用到其他的命令就自己百度了我就不多说了
成功进入vagrant目录创建了新的文件夹vagrantCentos7后进入第三坑

坑3 vagrant up

进入目录后
执行 vagrant init centos/7


image.png

翻译一下


image.png

这样是正常的,可以看到目录下就有一个Vagrantfile了,然后执行vagrant up
然后就出现了一堆错误提示


image.png

No usable default provider could be found for your system.

Vagrant relies on interactions with 3rd party systems, known as
"providers", to provide Vagrant with resources to run development
environments. Examples are VirtualBox, VMware, Hyper-V.

The easiest solution to this message is to install VirtualBox, which
is available for free on all major platforms.

If you believe you already have a provider available, make sure it
is properly installed and configured. You can see more details about
why a particular provider isn't working by forcing usage with
vagrant up --provider=PROVIDER, which should give you a more specific
error message for that particular provider.

又是一波各种查文档,得到答案是版本的问题,但是没有明确指出vagrant2.2.6可搭配virtualbox哪些版本
在一个https://blog.csdn.net/daxiang52/article/details/103518589
里得到了答案
vagrant2.2.6还没有支持到virtualbox6.1
然后将6.1版的配置在里面,方法如下

1.找到vagrant目录结构的下的如下文件我安装在E盘

E:\Vagrant\embedded\gems\2.2.6\gems\vagrant-2.2.6\plugins\providers\virtualbox\plugin.rb
在这个文件里增加6.1版本

require "vagrant"

module VagrantPlugins
  module ProviderVirtualBox
    class Plugin < Vagrant.plugin("2")
      name "VirtualBox provider"
      description <<-EOF
      The VirtualBox provider allows Vagrant to manage and control
      VirtualBox-based virtual machines.
      EOF

      provider(:virtualbox, priority: 6) do
        require File.expand_path("../provider", __FILE__)
        Provider
      end

      config(:virtualbox, :provider) do
        require File.expand_path("../config", __FILE__)
        Config
      end

      synced_folder(:virtualbox) do
        require File.expand_path("../synced_folder", __FILE__)
        SyncedFolder
      end

      provider_capability(:virtualbox, :forwarded_ports) do
        require_relative "cap"
        Cap
      end

      provider_capability(:virtualbox, :nic_mac_addresses) do
        require_relative "cap"
        Cap
      end

      provider_capability(:virtualbox, :public_address) do
        require_relative "cap/public_address"
        Cap::PublicAddress
      end

      provider_capability(:virtualbox, :snapshot_list) do
        require_relative "cap"
        Cap
      end
    end

    autoload :Action, File.expand_path("../action", __FILE__)

    # Drop some autoloads in here to optimize the performance of loading
    # our drivers only when they are needed.
    module Driver
      autoload :Meta, File.expand_path("../driver/meta", __FILE__)
      autoload :Version_4_0, File.expand_path("../driver/version_4_0", __FILE__)
      autoload :Version_4_1, File.expand_path("../driver/version_4_1", __FILE__)
      autoload :Version_4_2, File.expand_path("../driver/version_4_2", __FILE__)
      autoload :Version_4_3, File.expand_path("../driver/version_4_3", __FILE__)
      autoload :Version_5_0, File.expand_path("../driver/version_5_0", __FILE__)
      autoload :Version_5_1, File.expand_path("../driver/version_5_1", __FILE__)
      autoload :Version_5_2, File.expand_path("../driver/version_5_2", __FILE__)
      autoload :Version_6_0, File.expand_path("../driver/version_6_0", __FILE__)
      autoload :Version_6_1, File.expand_path("../driver/version_6_1", __FILE__)
    end

    module Model
      autoload :ForwardedPort, File.expand_path("../model/forwarded_port", __FILE__)
    end

    module Util
      autoload :CompileForwardedPorts, File.expand_path("../util/compile_forwarded_ports", __FILE__)
    end
  end
end
image.png

增加了一行

autoload :Version_6_1, File.expand_path("../driver/version_6_1", __FILE__)

2.找到同一目录下的文件

E:\Vagrant\embedded\gems\2.2.6\gems\ vagrant2.2.6\plugins\providers\virtualbox\driver\meta.rb


image.png

image.png

增加

"6.1" => Version_6_1,
image.png

3.当前目录下新建version_6_1.rb文件,文件内容如下:

image.png

内容

require File.expand_path("../version_6_0", __FILE__)

module VagrantPlugins
  module ProviderVirtualBox
    module Driver
      # Driver for VirtualBox 6.1.x
      class Version_6_1 < Version_6_0
        def initialize(uuid)
          super

          @logger = Log4r::Logger.new("vagrant::provider::virtualbox_6_1")
        end
      end
    end
  end
end

然后从新打开cmd在刚刚创建的目录行运行vagrant up 就好了


image.png

完!

你可能感兴趣的:(Vagrant+Virtualbox 踩坑 闪退&【No usable default provider could be found for your system.】)