2015年3月14日土曜日

Vagrant, VirtualBox, Chef ってなんじゃの

で、何なの?

  • VirtualBox = 仮想化基盤 (Virtualization)
  • Chef = サーバーの環境を構築(Provisioning)
  • Vagrant = 仮想化基盤と環境構築を1コマンドで実行するまとめ役

仮想化基盤。

Vagrant は VirtualBox 向けが出身なんですよ。ええ。
他にはVMware, Hyper-V, Xen, Amazon EC2 (AWS ?) とか。他にもあったはずだ

とても雑な説明をすると
  • 1つのマシンにたくさんOSを入れられる
    • これを仮想OSと呼ぶ?たぶん。
  • 仮想化基盤が同じなら、仮想OSを移動させても普通に使えるように作ってある
    • うごいたままというのもあるらしい(Live Migration)
  • その代わり、仮想OSの動作は、若干性能が犠牲になる。HW本来の性能よりやや劣る
    • ハードを「劣化が気にならないぐらい良く」すればよい(雑)
    • そもそも「性能について問題ない」ようなシチュエーションに落としこんだので
      仮想化環境を使う

プロビジョナ。環境”自動”構築ツール

実はあんまり試してない。Chef。なので Chef を語ることは出来ないのだ、、。
昔は開発環境構築には「Chef-Solo」を使ったらしいが、今は「Chef-Zero」らしい?いや「Chef-ClientにChef-Zero機能が入っている?」うむむ、、、。

ああ、まあそれはおいといて。プロビジョナってじゃあ何かっていうと
  • スクリプトでどういうサーバーのアプリケーション構成にしたいかを書いておく
  • スクリプトの設定どおりにサーバーの環境を構築してくれる
  • 「完全に同じ」環境を作り出せる(冪等性?)という触れ込み
プロビジョナに相当するものは、シェルスクリプト(!)、Chef、Ansibleという名前が出てきた。yum, aptitude あたりで何とかなるなら、シェルスクリプトで構築してもよいかも、、、などと考える。うむ。スクリプトも試してないんだ、、、。

Vagrantはまとめ屋さん

VirtualBox のAPIをたたいて仮想OSの設定を作って仮想OSをインストール(VirtualBoxの場合はインポートであろう)して仮想OS内のいくつかの設定をしてプロビジョナを起動して、、。
そう。まとめるだけの仕事で、どういう感じにするかをスクリプトに書いておく。

そしてすべてを vagrant up にする

で、何がしたいんだっけ

なんか開発環境をスクリプトで簡単に組める(というか再現できる)って聞いて,,,。
それが出来たらなんか間違って環境壊してもすぐ戻せそうじゃないですかぁ。

手作業だと何をやるんだっけって考えてみたんだよ

  1. 仮想化基盤のインストール (VirtualBoxとかね。)
    • まあ、それぐらいはやったことあったよ
  2. 仮想OSを作る。というか仮想OS用の仮想HW設定をする
  3. 仮想OSをいざインストール。
    • そのためにインストールメディアをダウンロードしてさぁ、、、
  4. 仮想OS自体の設定をする
    • ネットワークとかね。面倒だよ、、、
  5. 仮想OSにアプリケーションを入れる
    • 開発環境だから git とか svn とか samba とか
    • あと開発環境自体、、、SDK ? IDE とか
  6. アプリケーションを適切に設定する
さて、やったことがある人はわかると思うが、大体一日費やすぐらいの労力がかかる。
Vagrant, VirtualBox, Chef でこれが、、、

環境構築が完了するとこうなる

> vagrant up

役割分担に関して

まあ、設定ですよ。何を設定したらいいんだろうという話

VirtualBox, Vagrant, ”プロビジョナ”の役割分担はこんな感じ
  • VirtualBox
    • ちゃんとインストールされていればOK (得にすることなし)
  • Vagrant
    • 仮想OS用イメージ(box) のダウンロード
      • Linux なら有志が作成した既製品がそろっていて楽!
      • インストールだけならBoxの時点で終わっているのが当たり前
    • 仮想OSの設定
      • ネットワーク設定が個人的には重要
      • 他はプロビジョナを起動することの指定とか
      • メモリ量の指定とか
      • コア数の指定とか
  • プロビジョナ
    • 仮想OSが立ち上がった後のアプリケーションのインストール
      • 基本的には BOX に「インストール済み」にしておくので必要ないのがよい
    • 仮想OS内のアプリケーションの設定
Linux系ならもうらくらく。いつもの手順でどうぞ。
WindowsOS でもやり方とライセンスの扱いさえ間違えなければ出来る。コツは必要
Mac ? 知らない子ですね、、、(出来る気がする)

仮想OSなら当然気にすべき事柄

マシン性能に比して仮想OSの性能は劣るということ。

これはベンチマークをとって確認するとよさげ。
劣化が著しく使い物にならない場合は、仮想OSの設定を間違っていないかを確認、それでも不十分なら、そもそも仮想化環境の実行環境であるマシンの性能を確認。

仮想OSに対するアクセス法。

Windowsで普段開発をしていると、コンソールでつなげて開発、という感覚が慣れなかったりする。という実体験。方法としては
  • 実画面をリモートで確認できたり(VMwareはそうだったなあ、、、)
  • GUIで確認できたり(VirtualBoxでGUIありならそうだよなあ、、、)
  • リモートデスクトップでつなげる(Windows)
  • コンソールでつなげる(Windows含めすべてのOS)
などなど。まあ、勉強がひつようと。

参考情報リンク

公式。

入門記事。
第一人者

終わりに

vagrant とその開発者、布教者、情報発信者のすべてに敬意を表する。
勉強してよかった。すばらしいソフトです(※私やあなたが使わなかったとしてもだ!)

0 件のコメント:

コメントを投稿