📵

オフライン環境構築 Vagrant編

2020/09/11に公開

オフライン環境構築 目次へ

概要

オフラインでvagrantを使いたい人のための手順。

動作確認の前提条件

動作確認した環境の条件を以下に示す。

  • host os: Ubuntu 18.04.5 LTS
  • vagrant: 2.2.10
  • vagrant-vbguest: 0.24.0
  • virtualbox: 6.1.12 r139181

インストール

vagrant

Vagrant公式ダウンロードサイトからdebをダウンロードしてインストール。

vagrant-disksize

vagrant-disksizeは、ディスクサイズを拡張するためのプラグイン。

オンラインで以下のコマンドを実行して、gemファイルをダウンロードする。

wget https://rubygems.org/downloads/vagrant-disksize-0.1.3.gem

オフラインで以下のコマンドを実行して、プラグインをインストールする。

vagrant plugin install vagrant-disksize-0.1.3.gem

vagrant-vbguest

vagrant-vbguestは、vagrant up実行時にvirtualboxの仮想サーバにVirtualBox Guest Additionsを自動的にインストールするプラグイン。

オンラインで以下のコマンドを実行して、gemファイルをダウンロードする。

wget https://rubygems.org/downloads/vagrant-vbguest-0.24.0.gem

オフラインで以下のコマンドを実行して、プラグインをインストールする。

vagrant plugin install vagrant-vbguest-0.24.0.gem

参考:https://qiita.com/ozawan/items/9751dcfd9bd4c470cd82

virtualbox

Virtualbox公式ダウンロードサイトからdebをダウンロードしてインストール。

使い方

vagrantの使い方

Vagrantコマンドのチートシート を読むべし。

boxの取得方法

オンライン端末でboxをダウンロードし、オンライン環境でboxをロードする方法を以下に示す。

boxダウンロード

まず、オンライン端末で以下のスクリプトを実行し、boxをダウンロードする。

obget.sh
box=$1
username=`echo $box | cut -d "/" -f 1`
name=`echo $box | cut -d "/" -f 2`
version=$2
provider=$3

curl "https://app.vagrantup.com/api/v1/box/$username/$name/version/$version/provider/$provider" | jq ".download_url" | xargs wget -O $username-$name-$version-$provider.box

このスクリプトは3つの引数を有する。

引数

  • $1:box名(例:centos/8)
  • $2:バージョン名(例:1905.1)
  • $3:プロバイダ名(例:virtualbox)

このスクリプトの実行例を以下に示す。

実行例
./obget.sh centos/8 1905.1 virtualbox

boxロード

次に、オフライン端末で以下のスクリプトを実行し、ダウンロードしたboxをロードする。

obload.sh
box_file_path=$1
box_file_name=`basename $box_file_path`
username=`echo ${box_file_name%.*} | cut -d "-" -f 1`
name=`echo ${box_file_name%.*} | cut -d "-" -f 2`
version=`echo ${box_file_name%.*} | cut -d "-" -f 3`
provider=`echo ${box_file_name%.*} | cut -d "-" -f 4`

metadata=$(cat << EOS
{
    "name": "$username/$name",
    "versions": [{
        "version": "$version",
        "providers": [{
            "name": "virtualbox",
            "url": "$box_file_path"
        }]
    }]
}
EOS
)

echo $metadata | jq
echo $metadata > .metadata.json

echo vagrant box add .metadata.json
     vagrant box add .metadata.json

このスクリプトは1つの引数を有する。

引数

  • $1:boxファイル名(例:centos-8-1905.1-virtualbox.box)

このスクリプトの実行例を以下に示す。

実行例
./obload.sh centos-8-1905.1-virtualbox.box

Discussion