今天打算配置一个Vagrant+Virtualbox运行环境,然而各种坑
1.下载Virtualbox
地址:https://www.virtualbox.org/wiki/Downloads
我安装的是widows版本的
安装好后直接运行
1.下载Vagrant
地址:https://www.vagrantup.com/downloads.html
同样是windows版本
安装好后就开始入坑了
坑1 vagrant运行
由于第一使用vagrant 之前看的教程也都是直接接输入vagrant命令了,所以以为入口就是vagrant.exe
然后就是点击vagrant.exe后各种闪退,闪退到怀疑人生。一波搜索,查到结果
vagrant正确的打开方式是通过cmd
输入
vagrant --help
可以看到vagrant支持的命令
输入
vagrant -v
查看版本号
坑2 windows命令
由于长期的使用linux服务器滚瓜烂熟了linux命令,回到windows就是傻眼了,我的vagrant安装在E盘,于是我想跳转到E盘我的安装目录下去创建文件夹
于是我这样做
然后没有任何反应
然后还有什么ll
这里说下正确的命令
1.进入目录直接输入盘 如: E: 然后回车
2.查看目录下现有文件 dir 命令
3.创建新的文件夹 方法1 md +文件夹名 方法2 mkdir + 文件夹名称
4.进入目录中的文件夹 cd 文件夹名
至于如果需要用到其他的命令就自己百度了我就不多说了
成功进入vagrant目录创建了新的文件夹vagrantCentos7后进入第三坑
坑3 vagrant up
进入目录后
执行 vagrant init centos/7
翻译一下
这样是正常的,可以看到目录下就有一个Vagrantfile了,然后执行vagrant up
然后就出现了一堆错误提示
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
增加了一行
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
增加
"6.1" => Version_6_1,
3.当前目录下新建version_6_1.rb文件,文件内容如下:
内容
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 就好了
完!