博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vagrant 添加带版本号的 box
阅读量:6504 次
发布时间:2019-06-24

本文共 2969 字,大约阅读时间需要 9 分钟。

前言

众所周知,vagrant 添加 box 需要访问国外的服务器,然而国外的服务器总是那么的慢慢慢.....但是那个速度真的是不想吐槽。所以就有了本地添加 box 的需求,所以就有了以下的内容。

为什么一定要强调版本号呢?如果使用过 Homestead 的朋友们,那么你就会知道其中的酸爽。

以下内容完全从零开始的,如果只是特定问题,可直接跳过会的内容,从问题出看起。

目标

该文章最终的目标是添加一个带版本号的box,效果如下:

准备工作

  • 初始化一个虚拟机
  • 获取对应的 box 下载地址
  • 使用下载工具下载该 box

初始化一个虚拟机

https://app.vagrantup.com 中有很多的 box 可供我们下载使用,你可以搜索你想要的 box,我这里使用的是 centos/7

centos/7

$ vagrant init centos/7

在执行上面的目录处会多以下文件:

vagrant init

Vagrantfile 就是
vagrant 的配置文件,我们也可以直接配置该文件对虚拟机进行初始化。

获取对应的 box 下载地址

$ vagrant up
以上命令用于启动虚拟机,如果你的PC上没有安装过
centos/7(可以通过
vagrant box list 命令查看是否安装过),就会从
https://vagrantcloud.com 去下载
centos/7 ,如果有
centos/7 就会从本机获取。

执行完上面的命令后,会出现以下内容:

Bringing machine 'default' up with 'virtualbox' provider...==> default: Box 'centos/7' could not be found. Attempting to find and install...    default: Box Provider: virtualbox    default: Box Version: >= 0==> default: Loading metadata for box 'centos/7'    default: URL: https://vagrantcloud.com/centos/7==> default: Adding box 'centos/7' (v1809.01) for provider: virtualbox    default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1809.01/providers/virtualbox.box    default: Download redirected to host: cloud.centos.org    default:

注意上面的 default: Downloading ... 后面紧跟着有一个 url 地址,那个就是 centos/7 box的下载地址。

注意着的版本号为:
v1809.01,下面我们会用到。

使用下载工具下载该 box

作者这里使用的是:
迅雷极速版。当然你们也可以使用其他的下载工具。

下载 centos/7

添加 vagrant box

常规方案(不推荐)

vagrant的命令中,我们可以知道vagrant box add [options] <name, url, or path>这个一个命令。我们

进入到 virtualbox.box 下载目录,并执行以下内容:

vagrant box add centos/7 ./virtualbox.box

然后我们使用以下命令查看:

$ vagrant box listcentos/7          (virtualbox, 0)

我们可以看到 centos/7 已经添加到了本地,那么这个有什么问题呢?

问题

注意到 (virtualbox, 0),这个 0 就是指的版本号,这跟它真是的版本号不符。

那么我们该怎么做才能添加正确的版本号呢?有两种方案:

  • 从上面的基础上进行修改;
  • 通过 metadata.json 方式(推荐)。

正确的添加方案

根据 常规方案 修改(不推荐)

作者使用的是
win10操作系统,对使用
Mac OS的朋友们的情况不是很清楚。

打开 资源管理器 (俗称我的电脑),在你的 C 盘下的用户名下有一个 .vagrant.d/boxes 目录,添加的 box 会加载到这来,结果如下:

clipboard.png

这里的 centos-VAGRANTSLASH-7 就是我们刚才添加的 box,打开目录:

clipboard.png

这里的 0 就是版本号,我将它修改为: 1809.01 (上面有记载),然后使用命令查看:

$ vagrant box listcentos/7          (virtualbox, 1809.01)

注意到上面的版本号,就由原来的 0 变成了现在的 1809.01

通过 metadata.json 方式(推荐)

如果执行过 常规方案 的,使用以下方式清除 box

$ vagrant box remove centos/7

首先进入到 box 的下载目录,新建一个文件 metadata.json

{    "name": "centos/7",    "versions": [{        "version": "1809.01",        "providers": [{            "name": "virtualbox",            "url": "./virtualbox.box"        }]    }]}
  • name添加的box名字
  • version:版本号
  • providers.name:虚拟主机类型
  • providers.url:box地址

metadata.json准备完成后,执行以下命令添加:

$ vagrant box add metadata.json

输出以下结果:

==> box: Loading metadata for box 'metadata.json'    box: URL: file://D:/vagrant/box/metadata.json==> box: Adding box 'centos/7' (v1809.01) for provider: virtualbox    box: Downloading: ./centos7.box    box:==> box: Successfully added box 'centos/7' (v1809.01) for 'virtualbox'!

查看添加的 box 列表:

$ vagrant box listcentos/7          (virtualbox, 1809.01)

总结

就此,整篇文档就到此结束了,我们总结下要领:

  • 使用常规方法添加时,需要正确的找到 .vagrant.d/boxes ,并确认刚才添加的 box,最后进行版本修改;
  • 使用metadata.json方式,注意整个 metadata.json 中不能有注释的内容,注意各个参数的准确性。

转载地址:http://pbqyo.baihongyu.com/

你可能感兴趣的文章
23 第一周作业
查看>>
DNS解析偶尔延迟
查看>>
iOS打电话,发短信,发邮件,打开网址
查看>>
06-验证码-基本功能实现
查看>>
Java数据结构与算法(六) 希尔排序
查看>>
canvas学习笔记
查看>>
IntelliJ Idea下Go项目开启Debug调试
查看>>
elasticsearch安装步骤
查看>>
PHP获取Cookie模拟登录CURL(转)
查看>>
PHP-权限控制类(转)
查看>>
CSS3秘笈第三版涵盖HTML5学习笔记9~12章
查看>>
bzoj1044木棍分割
查看>>
leetcode-136-Single Number
查看>>
微信小程序笔记<五> 页面管理及生命周期(route)——getCurrentPages()
查看>>
http服务器小项目
查看>>
JS案例:Jq中的fadeOut和fadeIn实现简单轮播(没完善,简单实现)
查看>>
一些数学上的名词及操作
查看>>
C# DataGridVie利用model特性动态加载列
查看>>
IPv6 地址分类
查看>>
<%@ include %>指令和<jsp:include>区别
查看>>