概要
オフラインで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をダウンロードする。
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をロードする。
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