vagrant 添加帶版本號的 box

前言

衆所周知,vagrant 添加 box 須要訪問國外的服務器,然而國外的服務器老是那麼的慢慢慢.....可是那個速度真的是不想吐槽。因此就有了本地添加 box 的需求,因此就有了如下的內容。json

爲何必定要強調版本號呢?若是使用過 Homestead 的朋友們,那麼你就會知道其中的酸爽。centos

如下內容徹底從零開始的,若是隻是特定問題,可直接跳過會的內容,從問題出看起。

目標

該文章最終的目標是添加一個帶版本號的box,效果以下:服務器

準備工做

  • 初始化一個虛擬機
  • 獲取對應的 box 下載地址
  • 使用下載工具下載該 box

初始化一個虛擬機app

https://app.vagrantup.com 中有不少的 box 可供咱們下載使用,你能夠搜索你想要的 box,我這裏使用的是 centos/7ide

centos/7

$ vagrant init centos/7

在執行上面的目錄處會多如下文件:工具

vagrant init

Vagrantfile 就是 vagrant 的配置文件,咱們也能夠直接配置該文件對虛擬機進行初始化。

獲取對應的 box 下載地址url

$ vagrant up
以上命令用於啓動虛擬機,若是你的PC上沒有安裝過 centos/7(能夠經過 vagrant box list 命令查看是否安裝過),就會從 https://vagrantcloud.com 去下載 centos/7 ,若是有 centos/7 就會從本機獲取。

執行完上面的命令後,會出現如下內容:centos7

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的下載地址。spa

注意着的版本號爲: 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 list
centos/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 list
centos/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 list
centos/7          (virtualbox, 1809.01)

總結

就此,整篇文檔就到此結束了,咱們總結下要領:

  • 使用常規方法添加時,須要正確的找到 .vagrant.d/boxes ,並確認剛纔添加的 box,最後進行版本修改;
  • 使用metadata.json方式,注意整個 metadata.json 中不能有註釋的內容,注意各個參數的準確性。
相關文章
相關標籤/搜索