vagrantコマンドのメモ書き

SNAPSHOT

Command:vagran snapshot

snapshotを管理する時に使うコマンド。コマンド実行時点の仮想マシンの状態を記録。記録したsnapshotを使ってリストアできる。

snapshotはすべてのproviderでつかえるコマンドではない。

push / pop

pushでsaveしてpopでrestoreする。

push/popを使うときは、save/restoreコマンドは使えない。その逆も。どちらかのセットを使うこと。

vagrant snapshot pop --no-delete
リストアしたあとにsnapshotを消さない。

save / restore

snapshotに名前をつける時はvagrant snapshot save [vm-name] NAMEを実行する。

delete

providerによっては、子snapshotを先に消さないといけない。virtualboxは少なくともそう。Vagrantはsnapshotの親子関係まで追跡してくれないので、新しいsnapshotから順番に消していかないといけない。

box

box repackage

boxをパッケージに戻す時に使う。コマンドを実行すると、カレントディレクトリにboxが生成される。できたboxは再配布用に使うことができる。

usage
vagrant box repackage NAME PROVIDER VERSION
変数のNAME PROVIDE VERSIONはvagrant listの結果出力された物を使うこと。

boxを追加した時は、vagrantが勝手に解凍して内部に保管するようになっている。オリジナルの*.boxは見えない。このコマンドを実行することで、インストール済みのVagrant boxを回収することができる。

$ vagrant box list
centos/7            (virtualbox, 1610.01)
centos7             (virtualbox, 0)
hashicorp/precise64 (virtualbox, 1.1.0)
vccw-team/xenial64  (virtualbox, 20161209)
$ 
$ vagrant box repackage hashicorp/precise64 virtualbox 1.1.0 ls
Vagrantfile    bar        bootstrap.sh    foo        package.box
$

hashicorp/precise64を対象にrepackageしてみた。

package.boxという名前でboxができていた。この名前はコマンド実行時に指定できるのかな?あとで適当に変更しても問題なし?いまいちこのコマンドの実行タイミングを理解できていない。

インターネットにつながっていないクローズドな環境で、端末間でboxを受け渡す必要がある場合に、boxをインストール済みの端末でboxを再生成して渡す。とか?