はじめに
vagrant + virtualboxはコマンドラインベースでバーチャルマシンを立ち上げ、ソフトウェアのテストができる便利なツールだ。ただ、chefなどとの組み合わせも書いているページが多く、いろいろなページに分散して情報が載っていて不便なので、自分が使うとこだけログ代わりにまとめていくことにする。
インストール
VirtualBoxとVagrantをインストールする。
それぞれのサイトから、dmgを持ってきて、それぞれインストールする。
セットアップ
セットアップは基本的に以下の手順で行う。
- 仮想環境の登録
- ハンドル用のディレクトリの作成と初期化
仮想環境の登録
仮想環境は、外からダウンロードして登録するらしい。以下のサイトにいろいろな仮想環境(Linuxディストリビューション)がころがっているので、必要な環境を登録しておく。
ここでは、Ubuntu12.04をダウンロードして登録することにする。
$ vagrant box add ubuntu12.04 http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-i386-vagrant-disk1.box
4つめの引数は登録名になるので、自分で分かりやすい登録名を登録しておきましょう。ubuntuの複数のバージョンを使いたい場合など、"ubuntu"などという名前で登録すると後で面倒になります。また、ダウンロードするため、登録にはそれなりの時間がかかるので、まとまった時間を確保して行いましょう。
ハンドル用のディレクトリの作成と初期化
ホームディレクトリにでも、vagrantというディレクトリを作って、初期化する。
$ mkdir vagrant
$ cd vagrant
$ vagrant init ubuntu12.04
登録されたいずれかの環境で初期化するので、複数の環境を運用する場合は、ディレクトリ名を考えましょう。
基本の使い方
基本的な使い方は以下の通りである
仮想環境の立ち上げ
$ vagrant up
仮想環境へのアクセス
$ vagrant ssh
仮想環境の停止
$ vagrant halt
仮想環境のサスペンド
$ vagrant suspend
ロールバックとスナップショット
基本的な使い方はできたとはいえ、本当にやりたいのは、クリーンインストール環境でソフトウェアの確認を行いたいことだったりするので、ロールバックやスナップショットの機能を入れる
$ vagrant plugin install sahara
$ vagrant plugin install vagrant-vbox-snapshot
ロールバック
ロールバックを試すには、
- sandboxモードに入る
- 適当に作業
- 正否によって以下を実行
- 失敗してロールバックしたい場合、ロールバックを実行
- 成功して保存したい場合は現在の状態を反映する
という手順を踏む。以下、必要になるコマンドを示す。
sandboxモードに入る
$ vagrant sandbox on
ロールバック
$ vagrant sandbox rollback
変更を反映
$ vagrant sandbox commit
スナップショット
スナップショットは、仮想マシンのある状態を保存しておく機能だ。環境構築や共通の作業をしたところまでのスナップショットをとっておき、そのスナップショットを使って環境を作ると、同じ手順を何回も繰り返さずに済み、便利である。
Snapshotの作成
$ vargrant snapshot take hoge
Snapshotの確認
$ vagrant snapshot list
最新のSnapshotへ戻す
$ vagrant snapshot back
特的のSnapshotへ戻す
$ vagrant snapshot go hoge
ssh-configの設定
指定ディレクトリに入れなくても、立ち上げた仮想環境にsshログインできるように設定をconfigファイルに書き込むと楽です。また、X11を使ったアクセスなどをしたい場合に必要になります。
$ vagrant ssh-config --host ubuntu12.04 >> ~/.ssh/config
仮想環境のパッケージ化
すべての環境に必要なソフトウェアのインストールを一からやるのは効率が悪い。そこで、一定の作業を終えた仮想環境をパッケージ化して他の仮想環境に適用できると便利だ。それを実行するのが以下のコマンド
$ vagrant package
$ vagrant box add copy package.box
一つ目のコマンドで、まず現在の仮想環境のコピーがpackage.boxという名前で作成される。二つ目のコマンドでは、生成されたpackage.boxに基づいて、新しい環境copyを作成している。これで、一から環境をインストールすることなく、作業を開始できる。