職場でもプライベートでも、他の人に説明することが多くなったのでここにまとめます。
Vagrant(ベイグラント)って?
仮想化ソフト上で動く環境構築ツールです。VagrantはVagrantだけで動くと思っている人もいましたが、実際は仮想ソフトウェアがなければ役に立ちません。一般的に仮想化ソフトウェアには、VirtualBoxを用いることが多いですが、その他VMwareやAWS EC2なども使うことができます。Vagrantでは、これら仮想化ソフトのことをプロバイダと呼びます。
なぜ使うか
これまでの開発環境は、例えば手元のパソコンにウェブサーバーのApacheを入れて、MySQLサーバーを入れて(MAMPとか使ったりして)やっていたと思います。でもそれって、結局Mac(あるいはWindows)上で動くサーバーであり、本番環境は大抵何らかのLinux系OSが使われているために、環境差異が生まれます。
また、実務では本番で使われてるWebやDBサーバー、また言語のバージョンが異なるなんてことはザラです。皆さんのPCは、本当に受け持っているプロジェクトすべて本番と同じ環境で開発ができているでしょうか?
Vagrantを使うとOSから丸々同じ環境を作れるため、環境差異による不具合リスクを大きく低減させることができます。
これは、VirtualBoxなど仮想化ツール単体でも実現できていたことですが、Vagrantと組み合わせて使うことで更に強力な開発支援ツールとなりました。これは、Vagrantが間に入ることで単体ではできなかった自動での環境構築やファイルの同期など便利な機能の数々を提供してくれるからです。
VirtualBoxをインストール
前述の通りVagrantはプロバイダがなければ動かすことはできません。ここではプロバイダを一般的なVirtualBoxを採用して進めていきます。次のURLから使っているOSに合うものをインストールしてきてください(なおこの記事ではMacを対象にしています)。
https://www.virtualbox.org/
執筆時点の最新は「VirtualBox 5.0.10 for OS X hosts」です。
Vagrantをインストール
VirtualBoxをインストールしたら次はVagrant本体です。これも次のURLからお使いの環境に合うものをダウンロードしてインストールしてください。
http://www.vagrantup.com/
執筆時点の最新は 1.7.4 です。
インストールが終わったら、ターミナルからvagrantコマンドが使えるか確認しておきましょう。
|
$ vagrant -v Vagrant 1.7.4 |
Boxを追加
Boxというのは、今から作っていく仮想マシンの元となるテンプレートのようなファイルです。実際にはCentOSやDebianなどOSのイメージファイルとなっています。新しく仮想マシンを立ち上げるとき、このBoxをコピーして起動します。本記事では割愛しますが既に環境構築済みの仮想マシンイメージを元に自分でBoxを作ることもできます。
ここではサーバー用途に一般的なCentOS 6系を仮に入れてみます。指定したBoxが複数のプロバイダに対応している場合、コマンド入力後にどのプロバイダ向けのBoxを取得するか入力を求められる場合があります。このときはvirtualboxと書かれたものを選択します。
|
vagrant box add bento/centos-6.7 |
このコマンドはOSのイメージファイルをダウンロードしてくるので結構時間がかかります。途中で止めてしまうと中途半端にファイルが作られてしまって再ダウンロードに一手間掛かったりするのでのんびり待ちましょう。
BoxはVagrantBoxesというサイトで公開されていますが、このサイトは個人もアップロードすることができるため、信頼できないユーザーが作ったBoxは使わないようにしましょう。
ダウンロードが終わったら、正しくBoxが利用可能になっているか確認します。
|
vagrant box list bento/centos-6.7 (virtualbox, 2.2.0) |
仮想マシンの初期化
いよいよ上で落としてきたBoxを元に起動してみます。
まずは適当なワーキングディレクトリを作ってそこに移動します。
|
mkdir /tmp/test-vagrant cd /tmp/test-vagrant |
初期化するには vagrant init を使います。
|
vagrant init bento/centos-6.7 |
これでカレントディレクトリにVagrantfileというファイルが作られ、起動する準備が整いました。
Vagrantfileは、ベースとなるBox名など起動する仮想マシンの構成を保存しておくためのファイルです。Rubyで書かれています。
仮想マシンの起動
Vagrantfileを元に仮想マシンを起動するには vagrant up コマンドを使います。
実行が終わったら、正しく起動しているか確認しましょう。
|
$ vagrant status Current machine states: default running (virtualbox) The VM is runnning...(略) |
runningになっていれば正常にその仮想マシンは動いています。
また、今回は前述の通り先にBoxをダウンロードしていますが、もしvagrant upを実行した時にVagrantfile内に記載されているBoxがローカルに存在しない場合、内部的にvagrant box addが実行されBoxの取得を試みます。
仮想マシンへSSHでアクセスする
起動した仮想マシンの操作はどう行うかというと、vagrantのコマンドから簡単にsshでログインすることができます。
無事にログインできましたか?早速コマンドを叩いてみましょう。
|
[vagrant@localhost ~]$ whoami vagrant [vagrant@localhost ~]$ pwd /home/vagrant |
この通り、vagrantというユーザーでログインできていることが分かります。
もちろんroot権限も使えます。sudoはパスワードなしで使うことができ、rootのパスワードは vagrant になっています。
|
[vagrant@localhost ~]$ sudo ls /root anaconda-ks.cfg install.log install.log.syslog [vagrant@localhost ~]$ su - パスワード: # vagrant [root@localhost vagrant]# whoami root |
sshで接続できることを確認したら、exitコマンドを使って一度sshから抜けておいてください。suでrootになっている場合、2回入力する必要があります。
仮想マシンの停止
次は動いている仮想マシンを停止してみましょう。その前に、ターミナルで今居る場所が仮想マシン内でないことを確認してください。vagrantは仮想マシン内にはインストールされていないため、仮想マシン内でこのコマンドを使っても受け付けてくれません。
仮想マシンはCPUとメモリ消費が多く、また長時間起動していると仮想マシンが不安定になりがちです。使い終わったら停止することを心がけましょう。
実行後に前述の vagrant status を実行し、runningだったものがpoweroffに変わっていればシャットダウンが完了しています。
まとめ
ざっくりVagrantことはじめとして書いてきました。今後書く記事の中でも参照することがあると思います。実践的な使い方についてはまた別記しようと思います。
// TBD
- 起動、停止、サスペンド、削除
- ネットワーク
- プロビジョン
- etc