超絶簡単で便利な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で構成管理する方法についてお話します。