超絶簡単で便利なVagrantを使ってみよう!

こんにちは。デベロッパーの平形です。

はじめに

この記事ではVagrantの使い方を解説します。 なお、この記事は連載の続きになりますので、まだご覧になっていない方は、以下の記事を初めに読む事をおすすめします。 DevOps時代のアジャイルでスケーラブルな開発環境をVagrant,GitHub,Travis,Chef,OpsWorksで構築する

Vagrantとは?

Vagrant(ベイグラント)は、FLOSSの仮想開発環境構築ソフトウェア[1]。VirtualBoxをはじめとする仮想化ソフトウェアやChef(英語版)やSalt(英語版)、Puppetといった構成管理ソフトウェアのラッパーとみなすこともできる。 Vagrantを用いると、構成情報を記述した設定ファイルを元に、仮想環境の構築から設定までを自動的に行うことができる[2]。当初はVirtualBoxをターゲットとしていたが、1.1以降のバージョンではVMwareなどの他の仮想化ソフトウェアやAmazon EC2のようなサーバー環境も対象とできるようになった[3]。Vagrant自身はRubyで作成されているが、PHPやPython、Java、C#、JavaScriptといった、他のプログラミング言語の開発においても用いることができる[4][5]。 引用元:wiki

なぜVagrantなの?

まず現状の課題からお話します。 こんな事ってありませんか?

  • 開発者のPCのOSがバラバラで環境構築の手順書作るのめんどくさい。
  • てかWindowsの事なんか考えたくもないよ。
  • ハンズオンの時にみんなの環境が違うから、みんな挙動が違って嫌になる。

Vagrantを使うとこんな事ができます。

  • コードによる仮想マシンのOS指定、ネットワーク設定、利用するシステムリソースの指定。
  • Chefなどの構成管理ツールを利用して環境構築する事ができる。

以下のメリットがあります。

  • 複数の開発者に共通の開発環境を配布できる。
  • 仮想マシンの設定が1つのファイルで管理する事ができるので、認識しやすい。
  • WindowsでもMacでもLinuxでも共通の開発環境を提供できる。

vagrant使うのって面倒だと思いますか? めちゃくちゃ簡単です! まだ使ったことない人は、とりあえずインストールしてください!

インストール

VirtualBox

VagrantではVirtualBoxなどの仮想化ソフトウェアを使って仮想マシンを立ち上げる事になります。 今回はVirtualBoxを利用します。

ここからダウンロードしてインストール。

Vagrant

ここからダウンロードしてインストール。

クイックスタート

OSはubuntu 12.04(32bit)にします。

まず作業場所のディレクトリを作ります。

$ mkdir vagrant_test
$ cd vagrant_test

次にVagrant用の設定ファイルを作成します。

$ vim Vagrantfile

以下をVagrantfileに貼り付けてください。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise32"
end

仮想マシンを起動します。

$ vagrant up

以上です。 どうです? めちゃ簡単でしょ? 鼻血出た? ちなみに、今回はubuntuにしましたが他のOSも指定できます。 以下のカタログから好きなやつを選んでbox名に指定してください。 Boxカタログ

Vagrantの基本操作

  • vagrant up 仮想マシンの起動
  • vagrant ssh 仮想マシンにsshログイン
  • vagrant provision 仮想マシンのプロビジョニング(chef等の構成管理ツールを利用する場合の構成の更新)
  • vagrant halt 仮想マシンのシャットダウン
  • vagrant suspend 仮想マシンのサスペンド
  • vagrant destroy 仮想マシンの削除

とりあえずこれぐらい覚えておけば困りません。

Vagrantfile

Vagrantfileで細かい仮想マシンの設定を行う。

IPアドレス

ipアドレスを192.168.50.100に設定する。

config.vm.network "private_network", ip: "192.168.50.100"

仮想マシンで利用するメモリ容量とCPUのコア数を設定する。

メモリを2048MB、CPUコア数を2に設定する。

config.vm.provider :virtualbox do |vb|
  vb.memory = 2048
  vb.cpus = 2
end

ディレクトリを同期する

host側の./dataディレクトリをguest側の/srv/websiteに同期する。 これはdataディレクトリが存在する前提です。

config.vm.synced_folder "./data", "/srv/website"

例えば、webアプリ開発とかやってるなら、ドキュメントルートの指定とかをここでやると便利ですよね。

sshでログインする

vagrant sshでサクッとログインできます。

$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/
New release '14.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 06:22:31 2012 from 10.0.2.2
vagrant@precise32:~$ 

設定なんて必要ないんです。サクッとね。

色々いじり倒して壊して捨てるもOK。 何かあったら、また0からやり直せばいいじゃんと。 作りなおすときは、vagrant destroyしてvagrant upしてください。

今回使ったVagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise32"
  config.vm.network "private_network", ip: "192.168.50.100"
  config.vm.provider :virtualbox do |vb|
    vb.memory = 2048
    vb.cpus = 2
  end
  config.vm.synced_folder "./data", "/srv/website"
end

Vagrantfileを変更した場合は、vagrant reloadで再起動してください。

まとめ

どうでしたか? 難しかったですか? まだ現時点ではVagrantの威力はそれほど感じてない事でしょう。 しかし、次回以降からジワジワとボディーブローのように効いてくる事でしょう。

次回

Chefで構成管理する方法についてお話します。