仮想環境自動化ツール「Vagrant」 - Windows編
PR Timesエンジニアの落合です。
エンジニアのみなさん開発環境自動化してますか!?
今回は、弊社で使用している開発環境についてをご紹介したいと思います。
今まで、開発環境について
今までの環境では、Linuxで開発サーバーを構築するか、自分のWindowsマシンに仮想サーバーを作成したり、
簡単に使えるXamppをインストールしたりと、いろんな環境を試してきました。
開発サーバーを構築すると、複数人で開発する際、コンフリクトが起こり、開発が進みづらくなる時があり、
仮想サーバーを構築した場合、各々のマシンに環境を用意しなければなりません。
また、ミドルウェアの設定等も、各自のマシンで設定されてしまう為、設定漏れが発生する可能性も・・・。
Xamppも非常に有効なツールですが、やはり最終的にはLinuxで動作させる為、
何故かLinuxでは動かないとか、LinuxコマンドをPHPから実行する事も難しくなってしまい、
複数のPHPのバージョンを設定する事ができません。
そこで、弊社では、最近注目されている開発支援ツール「Vagrant」を導入しました。
今回の記事では、Vagrantの基本的な概念とセットアップ方法や、簡単な操作方法を紹介したいと思います。
仮想マシンの作成や環境構築等を自動化するツール「Vagrant」
WEBの開発現場では、自分のマシンに構築した仮想マシンにテスト環境を作成し、そこで開発やテストを行うスタイルが一般的かと思います。
先ほども書きましたが、環境を構築するのに、半日~1日かかってしまい、中々開発に入れないという事もあったかと思います。
Vagrantを使用すれば、ほんの数行で仮想マシンが作成できてしまします。
また、気軽に環境を捨てられるのも特徴的です。
開発途中で環境に変更が加えられて、全く別な環境を用意したとしても、「vagrant destroy」と入力すれば、
簡単に破棄することができます。
Vagrantのインストール
VagrantはVagrantをインストールしただけでは、仮想環境を構築する事ができません。
VirtualBox等の仮想化ソフトウェアが必要となります。
まずは、VirtualBoxからインストールしていきましょう。
VagrantとVirtualBox4.3.10の相性が良くないという情報がありましたので、
今回は旧バージョンの4.2.24をインストールする事にしました。
こちらからダウンロードする事ができます。
インストーラーに従って、インストールしていけば、問題はありません。
次に、Vagrantをインストールしたいと思います。
Vagrantに関しては、最新版をインストールしていきましょう。
こちらからダウンロードする事ができます。
こちらもインストーラーに従って、インストールしていけば問題ありません。
両方ともインストールが完了すれば、準備完了です!
VagrantBoxの追加
Vagrantのインストールが完了したら、次はBoxの追加です。
Boxとは、環境を構築する為のテンプレートのようなもので、事前にOSや設定等が含まれているものです。
そのBoxをダウンロードして、Vagrantに追加しておく事でその環境を利用して、仮想マシンをセットアップする事ができます。
以下のコマンドをコマンドプロンプトで実行する事で、boxを追加する事が出来ます。
$ vagrant box add BOX名 パス(URL)
Boxは色んな所で公開されていますが、基本的なものは「vagrantbox.es」で公開されています。
vagrantbox.esはこちら→A list of base boxes for Vagrant - Vagrantbox.es
今回は、http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20131103.boxを選択してみました。
VirtualBox用のCentOS6.4で最小構成になっています。
$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20131103.box
ダウンロードに時間がかかる為、先にダウンロードしておくのもいいかと思います。
Vagrantfileの生成
Boxの追加が完了したら、次はvagrantコマンドを使用して、Vagrantfileというファイルを生成します。
Varantfileは、仮想サーバーを構築する為の設定ファイルのようなものです。
今後仮想サーバーを作成する度に、作成していく事になります。
まずは、Vagrantコマンドを実行する前に、ファイルの作成場所を作成しておこうと思います。
今回は、Cドライブの直下に「centos」というフォルダを作成しました。
$ cd C:\ $ mkdir centos
次に、vagrant initコマンドを実行します。
$ vagrant init Box名
追加したBox名を入力する事で、それを利用して作成するようのVagrantファイルを生成してくれます。
今回は、以下のようにして実行しました。
$ vagrant init centos64 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
レスポンスで上記のように記載されていれば、生成成功となります。
早速、生成されたファイルを確認してみましょう。
VagrantfileはRubyで記述されています。
コメントアウトしている部分を省略すると、以下のようになっていると思います。
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "centos64" end
こういった形式で色んな設定を行う事が出来ます。
早速ネットワークの設定を行っておきましょう。
26行目あたりに、以下のようなコードがあると思います。
コメントアウトを外して、修正してください。
26 #config.vm.network "private_network", ip: "192.168.33.10" ↓ 26 config.vm.network "private_network", ip: "192.168.33.10"
今後、ここで設定したIPアドレスを使用して仮想サーバーへSSH接続します。
ここでは紹介しませんが、この他にもかなりの設定を行う事が可能です。
興味のある方は、ぜひ調べてみてください。
Vagrantコマンドを使ってサーバー起動
Vagrantの設定が終わったら、まずは以下のコマンドを実行して、
仮想マシンの起動を行います。
$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'centos64'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: .... ==> default: Clearing any previously set network interfaces... ・・中略・・ default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 4.2.16 default: VirtualBox Version: 4.3 ==> default: Mounting shared folders... default: /vagrant => ...
たったこれだけで、仮想サーバーの完成です!
仮想サーバーへの接続
vagrantのコマンドを使用して、SSH接続する事が出来るのですが、
コマンドプロンプトの初期状態ですと、接続する事が出来ません。
オススメは、Cygwin等のWindows上で動作するUNIXライクな環境を設定しておくことです。
ですが、tera termなどのターミナルエミュレーターを使用する事でも接続する事が出来ますので、
そちらを使用するものいいかと思います。
接続する際の設定は、以下の通りです。
主なVagrantコマンドのご紹介
Vagrantには、仮想マシンを操作する為のコマンドが複数存在しています。
また、Boxの操作に関しても、コマンドがありますので、
それを紹介しておきたいと思います。
BOXの削除
boxをVagrantから削除します。
$ vagrant box remove NAME
この他にも、たくさんのコマンドが用意されていますが、
良く使うコマンドをピックアップしてみました。
このように、簡単に仮想マシンをセットアップする事が出来て、すぐに使えるようになります。
Chefのようなプロビジョニングツールと連携して、短期的にサーバーを構築するように
実装しておけば、今後開発メンバーが変更された時にも、即日受け入れする事が出来ると思います。
また、今回は紹介していませんが、作成した仮想マシンをBOX化する事が出来ますので、
それを共有したりする事でも、短期的な開発環境の提供が出来るようになると思います。
今後もこのような便利ツールや、開発手法など、面白いものを発見したら、公開していきたいと思います!
今回実行した環境
ホストOS: Windows7 x64
VirtualBox: 4.2.24
Vagrant: 1.6.1
ゲストOS: CentOS6.4 x64