24日目: Vagrant で開発用サーバ構築 その1
ご挨拶
またまたご無沙汰しております。Toshでございます。
仕事のモチベーションを無理やり保ったり何やらでブログの更新が滞っておりましたorz
今はGW休暇中(5/1現在)なので、その間に「インチキせずに」穴埋めをやっていきます。
というわけで、今回のテーマは長くなりそうなので、何回かに分けますm(_ _)m
開発用サーバ構築に使用するものについて
Oracle VM VirtualBox(以下、VirtualBox)
まずは仮想環境用ソフトウェアがないとお話にならないということで、 VirtualBox を使用しようかと思います。
下記からダウンロード可能です。
Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle
Vagrant は初期の頃は VMWare にしか対応していなかったそうですが、現在は VirtualBox にも対応しておりますし、無償の範囲での機能の制限が VirtualBox にはないという理由で選びました。
あとは Tosh 自身が VMWare をちゃんと使ったことがないからですね(´・ω・`)
Vagrant
次に、本記事のメインとして、仮想環境構築ツールは Vagrant を使用します。
下記からダウンロード可能です。
Download - Vagrant by HashiCorp
仮想環境の構築・複製・配布などは Docker も有名ですが、Vagrant は下記の点で Docker との違いがみられます(Docker は触ったことないので自信なし)。
- 利点
- 欠点
- 設定が煩雑になりがち(な気がする)
- VirtualBox 固有の設定を盛り込むならかなり面倒
(設定の一部は 21日目に挙げております) - プロジェクト(環境)ごとに Box を作って OS を立ち上げるので、複数構築・起動はリソースを占有してしまう
Docker は共通の OS・カーネルを持ち、環境ごとに差分を持つので、AP サーバと DB サーバを分ける環境であればこちらの方がリソースを抑えて疑似的に再現できそうです。
今回は1つの環境でAP サーバと DB サーバを兼ねるつもりなので、Vagrant のほうが楽になる認識です。
※Docker についてはまたの機会にでもノシ
Packer
仮想環境構築支援ツールとして、Packer を使用します。
下記からダウンロード可能です(ダウンロード後、Path が通っているディレクトリに中身の実行ファイルを配備してください)。
Download Packer - Packer by HashiCorp
Vagrant にも provisioner としての機能はありますが、割と貧弱で、何もしなければシェルスクリプトしか使用できません(多分そのはず)。
Chef を導入すればそちらに provisioner としての機能を移譲することも可能ですが、今回はあえて Packer に provision をさせてみようかと。
Packer の provision の使いやすさは Vagrant とそれほど変わりありません(JSON 形式で設定するから好みが分かれる)が、これが真価を発揮するのは環境ごとのゴールデン・イメージ(ある程度セットアップしたイメージ)を簡単に複製するところだと思います。
AWS などのクラウドサービス用にイメージを複製する場合などは Packer を使用する価値があると思います。
他の利点等については実際に触りながら検証していきます(;・∀・)
ではでは、今回はこの辺で。
次回は実際に構築しながら書いていきます。