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

はじめに

この記事では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なの?

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

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

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

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の基本操作

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

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で構成管理する方法についてお話します。

このウェブサイトでは、よりよいユーザー体験のためにCookieを使用しています。詳細は、Cookieに関する方針をご参照ください。OK をクリックまたは本サイトの利用を続行することで、我々がCookieを使用することに同意したとみなされます。