参考:

由于国内网络的问题,下载Vagrant镜像非常的困难。明明我已经开了全局代理并且curl到了vagrantcloud,但是就是拉不下来镜像……无奈之下只能自力更生,直接搜索然后下载,比如这个RancherOS。我所进行的实验是Vagrant快速部署k8s,因为实验室服务器不够了,没有抵挡地住诱惑。

或者也可以查看使用vagrant up获得的信息(如下),其中URL即为下载地址。

Bringing machine 'server-01' up with 'virtualbox' provider...
Bringing machine 'node-01' up with 'virtualbox' provider...
Bringing machine 'node-02' up with 'virtualbox' provider...
==> server-01: Box 'chrisurwin/RancherOS' could not be found. Attempting to find and install...
    server-01: Box Provider: virtualbox
    server-01: Box Version: 1.5.1
==> server-01: Loading metadata for box 'chrisurwin/RancherOS'
    server-01: URL: https://vagrantcloud.com/chrisurwin/RancherOS
==> server-01: Adding box 'chrisurwin/RancherOS' (v1.5.1) for provider: virtualbox
    server-01: Downloading: https://vagrantcloud.com/chrisurwin/boxes/RancherOS/versions/1.5.1/providers/virtualbox.box

搜索并获取镜像 Link to heading

如前面所提到,直接到官网上可以搜索到对应的box。可以使用各种离线下载工具把它弄下来,因为不大我直接用浏览器下载了。

导入镜像 Link to heading

我所使用的环境是vagrant 2.2.16在win10下。一个非常麻烦的原因是这个版本有个bug,所以必须使用绝对路径不能用相对路径。

新建一个metadata.json放在下载好的box旁边。将box重命名为virtualbox.box

{
    "name": "chrisurwin/RancherOS",
    "versions": [{
        "version": "1.5.1",
        "providers": [{
            "name": "virtualbox",
            "url": "file:///C:/Users/wtyso/Downloads/virtualbox.box"
        }]
    }]
}
PS:其中file内一定要有三个斜杠,不然会报错……但是我不能理解为什么一个斜杠又可以,而且转义不应该是\吗。有点懵

接下来,在当前目录下执行命令vagrant box add C:\Users\wtyso\Downloads\metadata.json 终于可以看到好消息:

==> box: Loading metadata for box 'C:\Users\wtyso\Downloads\metadata.json'
    box: URL: file:///C:/Users/wtyso/Downloads/metadata.json
==> box: Adding box 'chrisurwin/RancherOS' (v1.5.1) for provider: virtualbox
    box: Unpacking necessary files from: file:///C:/Users/wtyso/Downloads/virtualbox.box
    box:
==> box: Successfully added box 'chrisurwin/RancherOS' (v1.5.1) for 'virtualbox'!

运行vagrant box list查看结果

(base) PS C:\Users\wtyso\Downloads> vagrant box list
chrisurwin/RancherOS (virtualbox, 1.5.1)

可喜可贺可喜可贺,如此就基本完结了。

原作者还提到,如果没有版本号可以使用vagrant box add centos/7 --box-version 1605.01 file://virtualbox.box的方式导入,我就不赘述了。