Vagrant道で感じた、型や哲学から入ることの必要性

Web上にソフトウェアなどの情報があふれている昨今、この手の技術的情報はWeb上にあふれているから、分からないことがあったら検索結果をかいつまんで解決すればいいじゃない・・・。

 

だがこうしてかいつまみ、重ねた知識や技術が、実はちぐはぐで合理性を欠いたものを生み出す危険と、それをさけるために正しい型から入る必要があると感じた話。

 

Vagrant(ベイグラント)との出会い

昨年 kawasaki.rbのLT大会(だったかな?)でその存在を知った。

が、その時は仮想マシンを動かすboxが、誰がアップしたのか認証がないとのことで使いたくなかった。

その後Elites Campでその有効性を知った*1

 

その後、開発元のhashicorpがboxの配布サイトを開設したことを知り、利用開始。*2

 

そして今まで、VirtuaBoxで開発環境作るときに、設定を微妙に操作することに使えるツールくらいの認識しかなかった。

 

Vagrant家元の書いた動物本を手に取る

本来の使い方は、こうではないんだろうと思っていたので、参考書籍を手に取る。

 

実践 Vagrant

実践 Vagrant

 

 

1.2 Vagrant

まだ、Vagtantもインストールしておらず、Vagrantがどう動くかも見ていませんが、実際の作業環境におけるVagrantの高レベルのワークフローを理解しておくことは、非常に重要です。それらの原則をまとめたおのが、「Vagrant道」です。

 

以下、この項ではVagrantを使った業務の流れが記述されていています。

ざっと読んだ感じでは

 

開発者(プログラマ)は環境を呼び出せばいつでも指定の環境で使い慣れたインターフェイスを使った開発をすることができる。

運用技術者(インフラ・サーバエンジニア?)は、環境設定をスクリプトで記述する。

業務終了後は、仮想環境は停止させたり、あるいは破棄してもよい。

そして、作法にのっとった記述、手順を踏んでいればどこでも同じ環境を用意することができる。

 

 といった印象をうけました。

 

最初は違和感を感じたものの、もう少し読み進めているとこれまで何か致命的な取違えをしていたかもしれないということと、ああそういうことか。ということに気づいた。

 

開発者が考えている(と思う)、正しい使い方

 

・Boxは、原則的には素のOS

・仮想環境で使いたいソフトウェア類とその設定は、シェルスクリプト

 Chef、Puppetなどに記載し、Vagrant up するときにプロビジョニング

 (仮想サーバにインストール)する。

・仮想環境上で開発、検証などをしたいソフトウェアのソースは、ホストOSと

 ゲストOSで共有するフォルダに配置する。*3

・「Vagrantの環境を配布する」行為は、指定バージョンのOSで用意された素のBoxと

 その中使用するソフトウェア類のインストールと設定記述である。

 

私がやっていた、誤った使い方

・Vagrantfile には、IPアドレスなどの設定を記述し、動かしたい環境に合わせる。

・仮想サーバには、その都度ファイルをアップロードする。

・Boxに、各種ソフトウェアをインストールして配布する。

 

そういう使い方もできるが、作者は推奨していない。

 まさに外道というか邪道。

 

だから、まず開発者の意図を理解することが大事と感じました。

 

*1:「僕のマシンでは動いていたんだけど、環境が異なったら動かなかった」現象が発生し青ざめた。

*2:altas.hashicorp.com ユーザ登録しなくともboxのダウンロードは可能

*3:だから、プログラマは慣れたツールを使って開発することができる