プログラマでありたい

おっさんになっても、プログラマでありつづけたい

初めてのVagrant


 @naoya_itoさんの入門Chef Soloとともに、にわかに注目されだしたVagrantです。Vagrantの読み方は、ベイグラントらしいです。意味は、直訳すると浮浪者ですが、意味するとことは形容詞の「あちこちに動く」でしょうね。
 元々は、Oracleの仮想化ソフトであるVirtualBoxを操作する為のツールです。それが何故Chefと関係あるのという話ですが、VagrantのPluginのSaharaがもつsandboxという超絶機能のお陰です。何とこれ、サーバの状態をcommit & rollback出来るのです。いわゆるRDBにおけるトランザクション機能です。Chefのレシピを書いたことがある人は解ると思いますが、レシピを書く作業は割と試行錯誤の連続です。元に戻せるように仮想イメージ化するとか、対象の部分を丸ごとコピーしておくとか方法はありますが、割と面倒くさいです。Sandbox機能で復旧も思いのままです。

Vagrantのインストール



 Vagrantのインストールは簡単です。rubyとVirtualBoxがインストール済みであれば、以下のコマンドでインストールしてからCentOSのリポジトリをダウンロードして、セットアップまでしてくれます。(当然ながら、OSイメージのダウンロードは時間が掛かります。)

$ gem install vagrant
$ vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.3-x86_64-v20130101.box
$ vagrant init centos
$ vagrant up

 無事、立ち上がるとvagrantのsshコマンドでログインできます。

$ vagrant ssh

 終了する場合は、hultです。

$ vagrant halt


 また仮想イメージを削除する場合は、destroyです。

$ vagrant destroy

詳しくは、
Vagrant - naoyaのはてなダイアリー
Vagrantで簡単仮想マシン構築 | Ryuzee.com

Vagrantのsandbox機能



 さて本題のsandbox機能です。実はこれは、Vagrantのデフォルトの機能ではなく、プラグインであるSaharaの機能なのです。Saharaのインストールは、次のとおりです。

$ vagrant gem install sahara

使い方は簡単で、

#トランザクション開始
$ vagrant sandbox on

#トランザクション開始時にまで戻る
$ vagrant sandbox rollback

#変更を確定
$ vagrant sandbox commit

#トランザクション終了
$ vagrant sandbox off

 ちなみに夢のようなツールですが、commitにはそれなりの時間が掛かります。使い方のメインとしては、sandbox onとrollbackになると思います。

まとめ



 という訳で、Sandbox機能のお陰でChef職人御用達になったVagrantです。最近、バージョンアップされて1.1になりました。VirtualBoxの他に、Amazon EC2やVMWare Fusionなどもサポートされるようになったようです。EC2サポートということで、俄然注目です。Saharaも中の人になった人が対応してたりで、どこまでサポートされているのか試してみたいですね。
 そんなVagrantですが、書籍での情報は非常に少ないです。私が知っている限りでは、Software Designの2012年10月号くらいです。総集編に全部入っているので、今だとそちらを買うのが良いかもです。また、Vagrant+Chefの話は入門Chef Soloが一番解りやすいです。そして、Kindle端末が手元にあれば、試しながら参照出来るので便利です。と、あさましい話で終わらせて頂きます。


See Also:
手動でサーバの設定をすることを禁ずる。入門Chef Solo
運用視点でChef ServerかChef Solo + Knife Soloのどちらが良いか考えてみた
何故、fluentdなのか?


Vagrant入門ガイド

Vagrant入門ガイド

実践 Vagrant

実践 Vagrant