VagrantとVirtualBoxで簡単に仮想環境の一発構築!

これまでサービスの環境構築はシェルスクリプトでやっていました。シェルスクリプトはgitで管理しておいて、上から準に流せば環境設定が完了するという方式です。

いまいちのようにも思うんですが、サービスの稼働環境はAmazon EC2で、一度環境を構築したらイメージ化して再利用ができるので、それほど不便にも思っていませんでした。

が、そろそろChefも併用しようということで、導入を進めています。

仮想環境の立ち上げが必要

Chefに限らずなんですが、環境を構築するフローを繰り返しテストするためには、環境を初期状態に繰り返しリセットする必要があります。

環境を初期状態にするというのはOSを再インストールするとか、ちょっと面倒な話です。Amazon EC2の場合は新しいインスタンスを起動するだけでリセットできるんですが、ローカルマシンだけで環境構築のテストができたら、喜ばしいです。

そこで使えるのが、仮想化ソフトウェアVirtualBoxです。

スクリーンショット 2014-06-23 20.55.14

Oracle VM VirtualBox

そして、VirtualBoxを含む仮想化ソフトウェアを用いて開発環境を簡単に起動したり捨てたりできるようにするVagrantというツールです。

スクリーンショット 2014-06-23 20.53.33

Vagrant

VirtualBoxとVagrantのインストール

VirtualBoxは、下記のページからダウンロードできます。

Downloads – Oracle VM VirtualBox

v.4.3.12のOSX向けをダウンロードしました。

http://download.virtualbox.org/virtualbox/4.3.12/VirtualBox-4.3.12-93733-OSX.dmg

Vagrantは、下記ページからダウンロードします。

Vagrant – Downloads

v.1.3.5のOSX向けをダウンロードしました。

http://files.vagrantup.com/packages/a40522f5fabccb9ddabad03d836e120ff5d14093/Vagrant-1.3.5.dmg

どちらもダウンロードしたらパッケージを展開してインストールします。

OSイメージの追加

無事にインストールが完了したら、vagrantコマンドが使えるようになります。

$ vagrant -v
Vagrant 1.3.5

vagrantコマンドから、OSイメージを追加します。ここでは、CentOSのイメージを、centosという名前で登録しています。

vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.5-x86_64-v20140504.box

かなり容量が大きいので、ダウンロードに時間がかかりますが、完了するとlistサブコマンドで確認できるようになります。

$ vagrant box list
centos (virtualbox)

これでインストールは完了です。実際に仮想環境を起動します。

Vagrantから仮想環境の起動

何かしらの作業ディレクトリを作成しておきます。

mkdir ~/vagrant
cd ~/vagrant

vagrantコマンドのinitサブコマンドで、環境を初期化します。これをすると、Vagrantfileという設定ファイルが生成されます。

vagrant init centos

あとは、vagrant upというコマンドを打てば、このVagrantfileを元に仮想環境を起動してくれます。

vagrant up

これで起動が完了です!あとは接続するだけです。

$ vagrant ssh
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$

これでここから先のプロンプトは、CentOSの環境となります。

仮想環境なのでめちゃくちゃに破壊しても自分のマシンには影響しませんし、環境構築のフローをテストする場合は、「一度捨ててもう一度最初から」というのを簡単にできます。

後片付け

仮想環境での作業が終了したら後片付けですが、vagrantのhaltサブコマンドで、環境を停止できます。

vagrant halt

haltは次にマシンの停止のようなもので、次にupサブコマンドで起動した時には同じ状態からスタートします。

停止ではなく、完全に破棄して最初からやり直したい場合は、destroyサブコマンドを使います。

vagrant destroy

これで全部まっさらに。

まとめ

Chef導入の前段階として、仮想環境の構築をしてみましたが、思っていたよりも簡単でした。

これから本格的にChefを使っていきたいと思います。

ちなみに、今これを読んでいます。

Chef実践入門 ~コードによるインフラ構成の自動化

次のページも参考にさせていただきました。

Mac OS XでVagrantとChefを使った環境構築のまとめ

About katty0324

Scroll To Top