当前位置: 首页 > 后端技术 > PHP

vagrantaddbox

时间:2023-03-29 16:27:33 PHP

withversionnumber前言众所周知,vagrant需要访问国外服务器才能添加box,但是国外服务器总是那么慢。。。不过速度真的不想吐槽。所以需要在本地添加一个盒子,于是就有了下面的内容。为什么一定要强调版本号呢?如果你用过Homestead的朋友,那你就知道酸了。下面的内容完全是从零开始。如果只是具体问题,可以跳过内容,从问题入手。目标本文的最终目标是添加一个带有版本号的框。效果如下:准备工作初始化一个虚拟机,获取对应的box下载地址使用下载工具下载box在https://app.vagrantup.com初始化一个虚拟机里面有很多box可供我们下载和使用,你可以搜索你想要的盒子,我这里使用的是centos/7。$vagrantinitcentos/7在执行上述目录时会添加如下文件:Vagrantfile是vagrant的配置文件,我们也可以直接配置这个文件来初始化虚拟机。获取对应盒子下载地址$vagrantup以上命令用于启动虚拟机。如果你的PC没有安装centos/7(可以使用vagrantboxlist命令查看是否安装),会从https://vagrantcloud.com下载centos/7,如果有centos/7,就从本机获取。执行上述命令后,会出现以下内容:Bringingmachine'default'upwith'virtualbox'provider...==>default:Box'centos/7'couldnotbefound。正在尝试查找并安装...默认值:BoxProvider:virtualbox默认值:Box版本:>=0==>默认值:加载框“centos/7”的元数据默认值:URL:https://vagrantcloud.com/centos/7==>默认:为提供商添加框'centos/7'(v1809.01):virtualbox默认:下载:https://vagrantcloud.com/centos/boxes/7/versions/1809.01/providers/virtualbox.boxdefault:下载重定向到主机:云。centos.orgdefault:注意default:Downloading...后面跟着一个url地址,就是centos/7盒子的下载地址。注意版本号是:v1809.01,我们下面会用到。使用下载工具下载盒子笔者这里使用的是:迅雷至尊版。当然,你也可以使用其他下载工具。添加vagrantbox通用方案(不推荐)在vagrant命令中,我们可以知道命令vagrantboxadd[options]。我们进入virtualbox.box下载目录,执行以下命令:vagrantboxaddcentos/7./virtualbox.box然后我们使用以下命令查看:$vagrantboxlistcentos/7(virtualbox,0)我们可以看到centos/7已经在本地添加了,请问这个有什么问题吗?问题注意到(virtualbox,0),这个0指的是版本号,与其真实的版本号不符。那么我们可以做些什么来添加正确的版本号呢?有两种选择:在上述基础上修改;通过metadata.json方式(推荐)。正确的添加方案按照常规方案修改(不推荐)。笔者使用的是win10操作系统,对于使用MacOS的朋友情况不是很清楚。打开资源管理器(俗称我的电脑),在你的C盘下用户名下有个.vagrant.d/boxes目录,添加的box会加载到这里,结果如下:centos-VAGRANTSLASH-7这里是我们刚刚添加的box,打开目录:0这里是版本号,我改成:1809.01(上面记录的),然后使用命令查看:$vagrantboxlistcentos/7(virtualbox,1809.01)注意上面的版本号已经从原来的0变成了现在的1809.01。使用metadata.json方法(推荐)如果你已经实现了常规方案,使用如下方法清空盒子:$vagrantboxremovecentos/7首先进入盒子的下载目录,新建一个文件metadata.json:{"name":"centos/7","versions":[{"version":"1809.01","providers":[{"name":"virtualbox","url":"./virtualbox.box"}]}]}nameadd盒子名称version:版本号providers.name:虚拟主机类型providers.url:盒子地址metadata.json准备完成后执行如下命令添加:$vagrantboxaddmetadata.jsonoutputs结果如下:==>box:加载box'metadata.json'的元数据box:URL:file://D:/vagrant/box/metadata.json==>box:添加box'centos/7'(v1809.01)forprovider:virtualboxbox:Downloading:./centos7.boxbox:==>box:Successfullyaddedbox'centos/7'(v1809.01)for'virtualbox'!检查添加的盒子列表:$vagrantboxlistcentos/7(virtualbox,1809.01)这是整个文档的结尾。总结一下要点:常规方式添加时,需要正确找到.vagrant.d/boxes,确认刚刚添加的box,最后修改版本;使用metadata.json,注意整个metadata.json不能有注释,注意每个参数的准确性。