仮想環境構築ツール「Vagrant」で開発環境を仮想マシン上に自動作成する
最近注目されている開発支援ツール「Vagrant」は、テスト用の仮想マシン作成やその環境設定などを自動化するツールだ。これを利用することで、仮想環境の作成からセットアップ、そして破棄までを、簡単なコマンドを実行するだけで行える。今回はこのVagrantの概要と基本的な使い方を紹介する。
仮想マシンの作成や環境構築、仮想マシンの破棄までを自動化するツール「Vagrant」
近年、Web開発の分野ではPC上に構築した仮想マシン上にテスト用の環境を作成し、そこで開発やテストを行う、というスタイルが一般的になっている。その場合に問題になるのが、本番環境とテスト/開発環境が同一になっていない、というケースだ。また、複数人の開発者が関わるプロジェクトでは開発者がそれぞれ自身のマシン上に仮想環境を構築して開発するという例も多いが、この場合開発者ごとのテスト/開発環境がそろっていないという問題も発生しうる。
テスト/開発環境をそろえるには、以前このブログでも紹介したChefやPuppetといった設定管理ツールを利用するのがおすすめだが、仮想化ソフトウェアを使ってテスト/開発環境を構築する場合、その前に仮想マシンの作成やOSのインストール、といった作業も必要になる。Vagrantは、この仮想マシンの作成などの作業も含めた設定管理の自動化を行えるツールだ。
Vagrantでは構成情報を記述した設定ファイルを用意して簡単なコマンドを実行するだけで、仮想ディスクイメージのダウンロード、仮想マシンの作成や起動、そしてプロビジョニング用のコマンドの発行といったタスクを実行できる(図1)。
プロビジョニングでは任意のコマンドを実行できるほか、ChefやPuppetといった設定管理ツールの設定ファイルを仮想マシンに転送して設定管理を実行する、といったことも可能だ。
Vagrantはどのような環境で有用なのか
Vagrantを利用することで、同一構成の複数の仮想マシンを簡単に作成できる。そのため、複数人や複数台のマシンでテスト用の仮想環境が必要な場合に有用だ。
また、Windows環境でも利用できるので、Windows上でLinuxサーバー向けの開発を行っている場合などでも有用だろう。
一方、実運用環境をVagrantで作成することは推奨されていない。コマンドで簡単に仮想マシンを破棄できるためだ。
Vagrantの動作環境と必要なソフトウェア
VagrantはRubyで実装されており、WindowsおよびMac OS X、Linux(Debian、Ubuntu、CentOS、Red Hat Enterprise Linux、Fedora)で動作する。ただし、Windowsについては一部機能制限やほかのOS環境と挙動が異なる点がある。
また、Vagrant自体には仮想化に関する機能は搭載されておらず、別途仮想化ソフトウェアが必要となる。Vagrant 1.4系でデフォルトで対応しているのはVirtualBoxおよびVMware(VMware FusionおよびVMware Workstation)だ。そのほか、XenやKVMといった仮想化技術を利用するためのプラグインも開発されている。
Vagrantを使う
それでは、Vagrantを利用してテスト用の仮想環境を作成する基本的な流れを紹介しよう。
Vagrantのインストール
Vagrantは公式Webサイトのダウンロードページからダウンロードできる。Mac OS X、Windows、Linux向けのパッケージが用意されており、Linux向けについてはDeb形式(DebianおよびUbuntu)とRPM形式(RHELおよびFedora)のパッケージが用意されている。
例えばCentOS(x86_64)上の環境の場合、RPM形式のパッケージをダウンロードし、次のようにrpmコマンドでインストールすれば良い。
# rpm -ivh vagrant_1.4.0_x86_64.rpm
VagrantはRubyで実装されているが、パッケージでインストールした場合Vagrantが使用するRuby環境(Ruby 2.0)も同時にインストールされるため、別途Rubyをインストールしておく必要はない。Linux環境の場合、このRuby環境は/opt/vagrant/embeddedディレクトリ以下にインストールされる。
また、Mac OS XやWindows環境の場合は、配布されているインストーラを実行し、指示に従ってインストール作業を進めれば良い(図2)。
VirtualBoxのインストール
Vagrantはデフォルトでは仮想化ソフトウェアとしてVirtualBoxもしくはVMwareを使用する。今回はオープンソースソフトウェアであるVirtualBoxを利用する例を紹介しよう。
VirtualBoxは、GPLv2ライセンスで公開されている仮想化ソフトウェアだ。ソースコードに加え、ダウンロードページにてWindowsおよびMac OS X、Linux、Solaris向けのバイナリが公開されている。WindowsおよびMac OS X環境においては、ここから入手できるインストーラでインストールを行えば良い。
また、Linux環境については、apt-getおよびyum向けのリポジトリが公開されており、そちらからインストールできる。詳しくはVirtualBoxのWebサイト上にあるLinux環境向けのインストール方法解説ページを参照してほしい。
たとえばRed Hat Enterprise Linux(RHEL)系の環境の場合、以下のようにしてリポジトリ設定情報が記述されたファイルをダウンロードし、/etc/yum.repos.dディレクトリ以下に配置するだけでOKだ。
$ wget http://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo # cp virtualbox.repo /etc/yum.repos.d/
リポジトリの追加後は、「yum install」コマンドでVirtualBoxのインストールを実行できる。
# yum install VirtualBox-4.3
また、インストール後にVirtualBoxが利用するカーネルモジュールのビルドも必要となる。この際にはkernel-develパッケージが必要となるので、別途インストールしておこう。
# yum install kernel-devel
なお、稼働中のカーネルのバージョンが最新のものではない場合、kernel-develパッケージによってインストールされたカーネル設定ファイル(kenrel-headers)のバージョンと稼働中カーネルのバージョンが一致しない場合があるので注意したい。稼働中カーネルのバージョンは、「uname -r」コマンドで確認できる。
$ uname -r 2.6.32-431.el6.x86_64
もしこれが、/usr/src/kernelsディレクトリ以下にあるカーネル設定ファイルのディレクトリと異なっていた場合、稼働中カーネルをアップデートするか、もしくは稼働中カーネルのバージョンに対応したkernel-develパッケージをインストールする必要がある。
$ ls /usr/src/kernels/ 2.6.32-431.el6.x86_64
カーネル設定ファイルのインストールが完了したら、「/etc/init.d/vboxdrv setup」コマンドを実行するとカーネルモジュールのビルドおよび組み込みが実行される。
# /etc/init.d/vboxdrv setup
なお、オープンソースで公開されているのはVirtualBoxの本体のみで、「Extension Pack」については非オープンソースのライセンス(個人使用および評価目的での使用のみ可)となっているので注意したい。
>>次ページ:VagrantでVirtualBox用の仮想マシンを作成する
【関連記事】
>>Vagrantで作った仮想マシンを簡単に共有できる「Vagrant Share」を使ってみる