Vagrantのスナップショット機能

はじめに

こんにちは、イメージ・マジックのもあいです。
弊社開発部ではVirtualBoxを使ってローカルに開発環境を作成して開発を行っていますが、開発環境作成ではVagrantとAnsibleを使って自動で環境を作成しています。
今回は、この開発環境作成で便利なスナップショット機能を多用していましたので、どういった状況でどう使っていたのかを軽く説明します。

Vagrantとは

詳しくはWikiPedia等で確認してください。環境構築用ファイルから自動的に仮想マシンを作成して設定を行えるものです。
会社ではUbuntuをサーバOSとして使用していますので、BoxイメージはUbuntuの提供元が用意しているものを使用しています。

スナップショット機能とは

Vagrant+Ansibleで開発環境を作成するということは、Ansibleスクリプトを実行して正しい状態になることを確認します。
Ansibleスクリプトでは内容にもよりますが、設定変更が必要なときだけ設定変更を行います。
ということは、1回目と2回目で実行内容が異なるというわけです。テストではどちらの挙動も確認する必要があるのですが、
そのたびにVagrantで仮想マシンを破壊/作成を繰り返すのは非常に時間が掛かります。

そこで、VagrantにはVirtualBoxのスナップショット機能を簡単に使うコマンドが用意されていて

vagrant snapshot save foo

とすることでスナップショットを保存することができます。
この状態でAnsibleスクリプトを実行して、環境を戻したい場合は

vagrant snapshot restore foo

とすることで、スナップショットをとった状態に戻すことができます。
これでAnsibleスクリプトの再実行の時間が大幅に短縮されます。
fooとかいてあるところは名称ですので、いくつかスナップショットをとることもできます。