Vagrantを使って仮想OSを簡単に作成しよう

vagrant
176件のシェア(すこし話題の記事)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Vagrantとは?

ちょっとした確認やテストのため、いつ壊れてもいいような環境が必要なことがあります。
そういった際にはEC2を使えばすぐに環境が用意できますが、多少お金がかかりますし、プロジェクト毎にIAMアカウントを発行したりする場合は管理も面倒です。

そんなときには仮想化ソフトウェアをつかってローカルに仮想OSをインストールしましょう。
Oracle VM VirtualBoxを使用すれば、簡単に仮想OSを使用することができます。
vbshot

じゃあVirtualBox使えばOKかといいたいところですが、自分でOSイメージをとってきてVirtualBoxにインストールしたり、
インストールした仮想マシンの設定をしたりと、けっこう面倒です。

そこで登場するのが、今回紹介するVagrantです。
VagantはVirtualBoxのフロントエンドとして使用することができるruby製のツールで、コマンドラインから仮想OSを管理できます。
なお、VirtualBoxだけでなく、VMWareやEC2(プラグインが必要)のフロントエンドとしても使用することができます。
vagrant

さらに、Vagrantでは最近流行りのchef/puppetとも連携しやすく、仮想マシン起動〜アプリケーションの環境構築までを一気に
自動化できるようで、あわせて解説していることが多いです。
cheftop puppet

では、Vagrantのインストールから仮想OSのインストールまでを試してみましょう。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.5
  • Vagrant : 1.2.2
  • VirtualBox : 4.1.2

ソフトウェアのインストール

VirtualBoxのインストール

まずはここからVirtualBoxをダウンロードしてインストールします。

Vagrantxのインストール

昔は下記のようにgemを使用すればインストールできたのですが、これでインストールできるのは古いバージョンのVagrantです。

% gem install vagrant #これは昔の方法

最近はパッケージ版をダウンロードしてインストールするようになったので、ここからダウンロードしてインストールします。
次のようにバージョンが表示されたらインストール成功です。

% vagrant -v
1.2.2

CentOSをインストールしてみる

ではVagrantを使ってVirtualBoxにCentOSをインストールしてみましょう。
「vagrant box add <仮想マシン名> <path>」とすれば、pathにあるboxファイルを追加します。
pathはHTTPでもローカルのパスでもかまいません。なお、boxの削除は vagrant box remove で可能です。

% vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-i386-v20130427.box

box listコマンドで確認してみましょう。ちゃんとaddされていますね。

% vagrant box list
centos (virtualbox)

では、適当な場所にディレクトリを作成し、そこでinitコマンドを実行しましょう。
このコマンドを実行すると、Vagrantfileという設定ファイルを生成します。

% mkdir centos
% cd centos
% vagrant init centos
・
・

Vagrantfileが生成されたら、upコマンドを実行して仮想OSを起動します。

% vagrant up      

これで起動するはずなのですが、私の環境では下記のようなエラーがでて起動しませんでした。

                                                                
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'centos'...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
・
・
Progress object failure: NS_ERROR_CALL_FAILED

どうもこれはVirtualBoxの問題のようで、4.2を使用すると上記エラーが発生してしまうようです。
もしこれと同じエラーがでた場合、ここから古いバージョン(私は4.1.12を選択しました)をダウンロードしてインストールし直します。
ダウングレードしたらもう一度upコマンドを実行してみましょう。今度はエラーもなくコマンドが終了するはずです。

sshコマンドを使えばそのままsshログインできます。ちゃんと起動しているみたいですね。

% vagrant ssh                                                                     
Welcome to your Vagrant-built virtual machine.

[vagrant@localhost ~]$

仮想OSが必要なくなったら、haltかdestroyで後処理しておきましょう。

% vagrant halt //停止
% vagrant destroy //削除

まとめ

今回はとりあえずvagrantをインストールして仮想OSを起動してみました。
vagrantの便利さはこんなものではなく、仮想OSでスナップショットを取って変更を元に戻したりできるpluginがあったり、
EC2インスタンスを管理したり、Chefと連携させたりもしています。(ここ参照)
こういったツールはしっかりと覚えて、環境周りの手間を楽にしたいですね。

参考サイトなど