Vagrantでお手軽に開発環境を作るハナシ(1) #nseg


去る4月19日に開催された長野のIT勉強会 NSEG 第50回で、久々に発表をしてみたので今回はその話題。実は思い立って勤務先用にある社内ツールを作っていたので、それについて。ここ最近インターネット上に公開されているWebサイトでアプリを稼働させるというと、概ねサーバーは Linux OS であることが多いと思う。お金持ちの SIer サマが Java や .NET でなにやら開発あそばされたとなるとまだまだ Windows だろうが。あ、FreeBSD というひとは「Linux」のところを「FreeBSD」に読み替えていただければ結構です。またまた、もう慣れっこでしょ?そんな扱い(ォィ

まあ異論は少なからずあるだろうけれども、Linux 上で Apache と MySQL と PHP でという俗にいう LAMP 環境でというハナシが多いのではないかと。で、問題なのは開発環境である。

まず、単純に勤務先から支給されるパソコンは Windows PC であり、勝手に OS を入れ替えるわけにもいかなかったりする。最近は Mac が支給されるかっちょいい会社もあるかもしれないけれども、それはやはり Linux ではない。つまり、LAMP ではない。仕方がないのでそこに Apache やら MySQL やら PHP やらをインストールして…となるわけだが、やったことのある方はご存知のとおり結構な手間がかかる。

そんなわけでそういうモロモロを1つのパッケージにした XAMPP やら MAMPP やらというシロモノもあって、それを開発環境とするという手段があるのだが、これはこれで結構な問題がある。

まず、いずれにせよ本番環境とは大きく異る環境であるため、本番環境に設置するまで気がつかないバグが残ってしまったりする。ごく単純な例をいうと、Windows や Mac (HFS+) はファイル名の大文字小文字を区別しないが、Linux では厳密に区別される。そんなことはわかっている?確かにあなたはわかっているかもしれないが、普段デスクトップで Windows や Mac OS しか使わない開発メンバー全員がわかっているだろうか?そしてそんな些細なことに本番になってからヤられるなどという阿呆な目にあいたいとは当然思わないでしょ?

次に、もちろん上のようなことがわかっているあなたは、VMware や VirtualBox といった仮想化ソフトのゲスト OS で Linux 環境を作った方がいいやとお思いだろうし、その環境を普通に使いこなしてらっしゃるだろう。逆に Windows や Mac OS に Apache やら MySQL やらインストールするとか、XAMPP とか MAMPP とか、そんなんしらねーとお思いになるのではないだろうか。経験の少ない開発メンバーのために、自分のよく知らないもののサポートをしなければならないなんて悪夢としか言いようがない。

そこで、次のようなことができれば理想的だろうと考えたのである。

  • 仮想化ソフトで本番環境に限りなく近い Linux 環境をメンバー全員に配布する
  • それぞれの環境で稼働している Web にブラウザで相互にアクセスしてお互いの開発状況を確認できる
  • いわいるプログラム開発者はもちろんフロントエンド作成者(HTMLコーダー)のようなメンバーも、Linuxのコマンドなぞ1つも使わなくても利用できる環境である

わざわざそんな甘やかしたことしなくても、メンバーをちゃんと教育すればいいという意見もあるかもしれない。しかし、すべてのメンバーに開発環境は必要なれど、すべてのメンバーが Linux を使いこなせる必要などもちろんない。プログラミング言語や Photoshop の使い方は必要にかられて頑張って習得するひとでも、まあ絶対に知らなくてもとりあえずなんとかなる Linux の使い方を習得する意欲のある人というのは案外少ないし、意欲があっても Windows や Mac OS の GUI べったりな世界で生きてきたことにより残念ながらこういうものを使うセンスがないという人もいる。逆に言えば意欲とセンスがあるひとは放っておいても習得する。

つまり、甘やかしているというよりは、できないヤツでもできることをやってもらうためにやらなくていいことはやってもらわないという、とても突き放したハナシだったりする。もちろん気に食わない言われようかもしれないが、いわいるWeb デザイナーサマが、Linux を使いこなせるようになろうなどと思うひとはそうそういないでしょ?Web になにかを創るひとなら必要でないはずのないスキルなのだけどね。

で、VagrantChef が使えるだろうと思ったのである。

だいたいそのあたりを解説しているハナシは knife-solo という Chef Solo の支援ツールを使うハナシになっているのだけれど、この環境を Windwos 上に作るのは滅茶苦茶大変でやってられないというハナシは先日書いたとおりである。

Vagrant にはゲスト OS 上の Chef を使って ホスト OS 上にあるレシピを実行する機能があるので、それであれば Vagrant さえインストールしてしまえば Windwos で動かすことは難しいことではない。

というわけで、knife-solo を使わずに、依存関係とかがあるといやなので Berkshelf の先人たちの cookbook も使わず、出来る限り、特にセキュリティ設定等が本番環境とほぼ同等になるように cookbook を書きまくってみたので、それを公開しますというのが今回の趣旨である。

これは僕が公開 Web サーバーをたてるときに実際行っている最低限のセキュリティ設定やら、RHEL / CentOS においてもともとの設定ファイルにはなるべく手を加えない (各パッケージのセキュリティアップデートが出た時等の影響を最小限に抑えるため) アイディアなどを盛り込んだものである。

また、開発環境という面では、Active Directory ドメインが張り巡らされた立派な (もちろんイヤミである) LAN が施設されているわけではなく、ブロードバンドルーター組み込みの DHCP サーバーで LAN を組み、ファイルサーバーは NAS を使っているというような、WORKGROUP のマスターブラウザーも不安定なカンジの典型的な中小企業の LAN でも、自分の開発用ゲスト OS はもちろん、他のメンバーの開発ゲスト OS を見るのも簡単に名前解決できるために Apple の Bonjour を使うようにした。

というわけで、「お手軽」と言いながら実は結構いろいろとアイディアをぶち込んでみたものなのである。

と、ここまで書いて長くなったので、使い方なんかを書こうと思ったけれども、今回は NSEG で使ったスライドへのリンクだけ貼ってお茶を濁しておく。

Vagrantでお手軽開発環境

使い方その他は、そもそもこれは社内ツールにする予定のものなので、いずれ書かねばならぬものなので、そのうち書く予定。

2015/09/30追記:なんと1年半ブリに続きを書いた。環境構築編はこちら


, , , , ,

コメントを残す