vagrantを使っていて実感したこと

うちの学科界隈でもvagrantが話題に上って来たりなんかしてます。
vagrant使い始めてまだ2ヶ月目くらいではありますけど、実感していることをてきとーに書いてみようかな、と。

そもそもvagrantとは

「違う環境に移行可能な開発環境を簡単に構築・管理し、配布することができる開発環境作成ツール」(参照)です。
終わり。

僕の中のイメージとしては
「仮想マシンの起動簡単だよー」とか「簡単に仮想マシンの中に入れるよー」とか「誰でも仮想マシンの雛形を公開できるし、公開されているものから持ってくることもできるよー」
みたいな。

Virtual Boxだけだった場合は、
[bash]
まずはVirtualBox起動して
->仮想マシンインストールして
->起動して
->sshやネットワークの設定して
->ようやくssh可能
[/bash]
みたいなのが
[bash]
$ vagrant box add [box名] [file]
$ vagrant init [box名]
$ vagrant up
$ vagrant ssh
[/bash]
というか && で繋いであげれば
[bash]
$ vagrant box add [box名] [file] && vagrant init [box名] && vagrant up && vagrant ssh
[/bash]
で終わりです。簡単。

使い始めた理由

vagrantをなぜ使い始めたか、というところからなのですが。
現在enPiTというプログラムに参加していて、そこで行っていることが「複数人のチームによるアプリケーションの開発」です。
その事前学習のような感じで東京に集中講義を受けに行きました。
集中講義の中にvagrantを使った開発環境の構築、みたいな部分があってそれが使うきっかけとなりました。

と、いうわけで、東京での集中講義の時にvagrantのチュートリアルみたいなことをしてきました。
といっても上のコマンド叩くだけだったので一瞬ですけれども。
boxファイルは配布されました。
以下のwebページとかでboxファイルが公開されてたりします。
vagrantbox.es
[bash]
vagrant box add testVM http://hogehoge
[/bash]
みたいなこともできるので帯域あるならそれでもありじゃないかと

使っていて嬉しいこと

その1

やはり「チームの全員が同じ開発環境を使える」っていうのがとても嬉しいことだな、と。
チーム、というところがミソで、「チームでの開発環境を統一したい」というのは当然のことだと思います。
一人一人ばらばらに環境構築するのも確かに勉強にはなりますが、そもそもの目的が「開発」なのにそれ以前の「環境構築」に時間がかかるというのは本末転倒です。
(環境構築まで課題としているのなら、そうではないですが)

その2

これとっても便利だな〜、って思うことなのですが、
「vagrant init [box名] した場所と 仮想マシンの/vagrant/ が共通となっている」ことですね。
hostとvmとで共有ディレクトリができる、ってことです。
hostで編集した内容がvmに反映されますし、vmの編集がhostに反映されます。
例えば~/vmという場所でvagrant init すると
[bash]
~/vm $ vagrant init [box名]
~/vm $ ls
Vagrantfile
~/vm $ vagrant up
出力省略
~/vm $ vagrant ssh
vagrant: ~ $ cd /vagrant
vagrant: /vagrant $ ls
Vagrantfile
vagrant: /vagrant $ touch test
vagrant: /vagrant $ ls
Vagrantfile test
vagrant: /vagrant $ exit
Connection to 127.0.0.1 closed.
~/vm $ ls
Vagrantfile test
[/bash]
とまあこんな感じです。
(余計分かりにくかったら申し訳ないです)

ファイルのやりとりがとっても簡単なわけですね。
ちなみにこれ、/vagrantをln -sとかしちゃうと…とかってことも考えられるので夢広がる。
このblogの例では、/var/www/htmlを/vagrantにリンクさせてるみたいですね。

つまり、仮想マシンはサーバーとしてだけ動かして、ファイルの編集はHost側でしたい、なんてことも楽に実現可能。
そう、vagrantならね。

その3

まだまだあります。
仮想マシンの設定が簡単なこととか。
例えば、ネットワーク系ではport forwardingも簡単です。
[bash]
config.vm.network :forwarded_port, guest: 3000, host: 3000
[/bash]
この一行をVagrantfileに書けば、host側の3000番ポートへのアクセスはvm側の3000番ポートにフォワーディングする、とか。
ちなみに知っての通り、railsです。
他にも、chefとかpuppetとかの連携もできるみたいですねー。

vagrant勉強会とか面白そうじゃないですか。
誰か是非やってください。聴講します。

その4

仮想環境なのでぶっ壊れても構いやしない、ってとことか。
また作り直せばいいんですよ作り直せば(泣きながら)

気になりそうなところ

僕のメイン機、i5で4GBメモリなMac miniで体感してることだけ。

FireFoxでタブ20個ぐらい開きつついろいろ作業してるのですが、今のところ問題なく動作しています。
大体400MBくらい。ちなみにCUIです。
仮想マシンで動いてるのはrailsくらいです。

起動時間(vagrant up)については、10数秒とかくらい。

何やるかにもよりますが、CPUはそんなに食いません。(CUIだし)
ブラウザの方が食ってます…。
さすがにrails立ち上げる時とかは食ってますが、そんなに気になりません。

どんな人にオススメか

あなたです。

終わり。

注意点というか

ブーメランで自分にもダメージですが、せめて情報工の人は配布されたboxに頼りすぎずに自分で環境構築できるようになって欲しいですね。
環境構築の練習用に、minimalなbox作ってどこかに置いとくかな?