Matthewの備忘録

忘れたときはここを見ろ。何か書いてある。

VirtualBoxとVagrantによる同一仮想環境の提供 その3

 Vagrant を使って Virtual Box のイメージのスナップショットを同じ名前で録っていたら削除できなくなったので、イメージを全て削除して構築しなおすことにした。Virtual Box / Vagrant 内部ではスナップショット毎に個別の ID が割り当てられてはいるが、時系列が崩れたり、同じ先祖から複数の子孫イメージがあると削除できなくなるようだ(再調査は必要)。今後はスナップショットに日付と時刻を含ませることにする。

イメージの全削除

 %homepath%\.vagrant.d\boxesフォルダ(Windowsの場合)にはイメージの雛型がある。これは削除する必要はない。%homepath%\VIRTUALBOX VMS にイメージとスナップショットが保存されているが、そのサブディレクトリを全て削除する。例えば %homepath%\VIRTUALBOX VMS\hogehoge というサブディレクトリがあれば、それを削除する。
 今回は、スナップショットと最初のイメージを削除して構築し直すだけだから、Vagrant init コマンドで生成したファイルを全て残しておき、再利用する。

イメージ再作成

up する前に

 イメージファイルの再構築なのだが、例えば rails 開発環境 rails-dev-boxVagrant ファイルと bootstrap.sh シェルファイルを用いている場合、更新されていることがあるので、公開サイトで確認し、更新されてればダウンロード、そして伸長・展開し、Vagrant ファイルと bootstarp.sh ファイルを置き換えておくこと。

 前に vagrant up コマンド実行したフォルダに .vagrant というフォルダがあるはずであるが、それを削除しておく。

vagrant up 実行

 準備ができたら vagrant up を実行するだけ。

スナップショットの録り方

 スナップショットのラベル名に日時を含めるためにバッチファイルを作成して実行することにした。

@echo off

set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%

set time2=%time: =0%

set hh=%time2:~0,2%
set mn=%time2:~3,2%
set ss=%time2:~6,2%

set filename=rdb_%yyyy%%mm%%dd%_%hh%%mn%%ss%

vagrant snapshot save %filename%

或いは短くこうしてもよい。

echo off

set date1=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set time1=%time: =0%
set time2=%time1:~0,2%%time1:~3,2%%time1:~6,2%

set filename=rdb_%date1%_%time2%

vagrant snapshot save %filename%

LinuxMac などではシェルプログラムにするか次のように直接コマンドラインで打ち込んでもよいだろう。

$ vagrant snapshot save rdb_`date +%Y%m%d_%H%M%S`

参考:
www.atmarkit.co.jp
tipstour.net
p--q.blogspot.jp
ameblo.jp
date コマンド | コマンドの使い方(Linux) | hydroculのメモ