vagrantを使った開発環境構築
- 2014年10月01日
- CATEGORY- 1. 技術力{技術情報}
ケイズのホームページに写真公開されてしまった林です。
他の方々に比べていやに短足感が目立ちます・・・。ちゃんとズボンあげまくって学生かよ!!って突っ込まれるくらいやればよかった。
pythonの記事は後日執筆します。というか他のメンバーのほうが既に詳しくなってきたんじゃないかという感じもありますが。。。
断じて飽きた訳ではないです。ちょっとfabricのほうが楽しくて浮気しちゃってますけど。pyramidの興味が一気に失せる程いいよ、fabric。
Introduction
さてさて、本題です。
まぁ普通に巷で使われているVagrantについて書いてみようかなと思います。
Vagrant。これは「ゔぇいぐらんと」と読むらしいです。最初「ゔぁぐらんと」とか読んでいたのは秘密。
本家URLはこちら。vagrant
これを使うと何がいいかってところは下記。
1. さくっと全く同じ環境が作れる。
2. いらなくなったら捨てれる。
3. 必要になったらまた同じ環境が作れる。
ポイ捨て自由なんすよ、Vagrant!
開発環境をVMとかでやってると無駄にVMが乱立していきますよね。
またVMを作って、これ使ってーって渡すのもいいですけど、ユーザーがうんぬんかんぬん。やり方がなんか違うだうんぬんかんぬん。
そしてどんどん圧迫していくVMさん。。。
Vagrantさんを使うと使いたいときにさっと使えて、必要なくなったら削除できる。
そんな感じで開発環境にはもってこいです。dockerは現在お勉強中です^^
では使い方から。
Install
インストール方法は至って簡単。
公式サイトからインストーラーをダウンロードしてきてダブルクリックで一発終了。
DownLoad
ちなみにvagrantはrubyで作成されているのでrubyは必要です。
あと仮想環境用にVirtualBoxですかね。他にもAWSやVMware Fusionでも動くみたいです。
Linuxの場合はwgetとかでダウンロードしてきて、rpmで入れたり、apt-getしたりって感じですね。
MacとWinはインストーラーが用意されているのでそれでさくっと入れられますよ。
Windowsで環境をやる場合はそもそも仮想環境作れないとか色々あると思いますが、
その辺は調べれば出るくらいの情報はあるのであしからず。
使用方法
まぁ使用方法は色々なところで書いていただいているのですが、一応参考までに。
BOX(イメージファイル)は自分で作成した方がいいですね。そのほうがsecureにもなるし、配布用にも使えますわな。
参考サイト様 Ryuzee.com
ちなみに一応イメージが集約されているサイトはあります。
が、当然何を仕込まれているかは分からないので使用については自己責任でお願いします。
Vagrantbox.es
インストールが完了するとvagrantコマンドが使用できるようになります。
基本コマンドは以下の通り。
# vagrant初期ファイル作成(VagrantFileを作成します。) vagrant init # Boxを追加 BOX_NAMEには指定したい名前、URLはイメージURLを追加します。社内で使うなら社内用イメージ作成した方がよし。 vagrant add box BOX_NAME URL # vagrantインスタンスを立ち上げ。 vagrant up # インスタンスを停止 vagrant halt # インスタンスのステータス確認 vagrant status # インスタンスを削除 vagrant destroy # インスタンスへssh接続 vagrant ssh # プリインストールを実行。(後述) vagrant provision
とりあえずこれだけ覚えておけばそれなりに使えます。
まずは適当なところにvagrant用のフォルダを作成してください。
作成が終わったらそのディレクトリに移動して、以下のコマンド
vagrant init
そうするとVagrantfileが作成されるので、編集します。
とりあえずこんな感じで。
Vagrant.configure("2") do |config| config.vm.box = "centos_vagrant" config.vm.box_url = "ほにゃららー" config.vm.provision :shell, :path => "~/vagrant/bootstrap.sh" config.vm.network :forwarded_port, host: 4567, guest: 80 end
一つ一つ説明すると…
Vagrant.configure("2") do |config|
ここはお約束。vagrant2系を利用する、ということらしいんですが、実はまだよくわかってないです。
1というのもあるらしいのですが。。。
config.vm.box
これはボックス名の設定。適当でいいです。
config.vm.box_url
ボックスのURLを指定します。これを指定するとイメージファイルをダウンロードしてきて、展開するって感じです。
config.vm.provision :shell, :path => "~/vagrant/bootstrap.sh"
これはイメージ作成が完了した後に色々やってくれます。いろいろというのはshellスクリプトに記載されている内容をローディングしてくれるというイメージでOKです。
例えば
#!/usr/bin/env bash yum -y update yum -y groupinstall "Development Tools" yum -y install openssl openssl-devel readline-devel zlib-devel curl-devel libyaml-devel flex libxml2-devel zlib-devel libpng-devel libjpeg-devel libXpm-devel freetype freetype-devel yum -y install httpd rm -rf /var/www ln -fs /vagrant /var/www # vimの為にmarcurialとgitをインストール yum -y install hg yum -y install git yum -y install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel
こう書いておくとyum updateして、groupinstallしてくれて色々yum installしてくれてうんぬんかんぬん。
って感じです。これをイメージが立ち上がる前にやってくれるんですね。便利。
ちなみに
vagrant provision
とやるとvm.box.provisionに設定されているシェルスクリプトを実行してくれるので、何回でも試せますよ。
オプションが:shell以外にもありそうなので、色々やれそうですねー。
config.vm.network :forwarded_port, host: 4567, guest: 80
ここはイメージファイルのローカルのmacなりwinなりからhttp://localhostにアクセスすると、
vagrantのvmのport80に転送しますよ、って設定です。確か。
ポート転送とかもできるのでいい感じです。network周りをいじらなくてもOKっていうのがまたいいですね。
とまぁここまででイメージの立ち上げは終わったと思うので、あとはターミナルやらsshクライアントから
vagrant ssh
とうてばVM環境にssh接続できます。
winの場合は作成したイメージ次第、ってところでしょうか。
次はdockerとかfabricとかの内容を書きたいと思っています。
以上、ざっとかなり長くなりましたが、vagrantの使い方とかのご紹介でしたー。
【関連記事】
Pythonプロフェッショナルプログラミング
開発を学ぶにあたって、思うこと。
Mac Book Airのストレージの交換
Python3.4 + Pyramid + SQLAlchemy その1
redmineのbacklogプラグイン
- 2014年10月01日
- CATEGORY- 1. 技術力{技術情報}