ブログ

ryuzeeによるブログ記事。不定期更新

vagrant-lxcで軽量仮想環境を手に入れる

Vagrantは標準ではVirtualBoxを仮想環境として利用しますが、とにかく遅いのが難点です。 Test-Kitchenを使ってChefのCookbookのテストをしたり、これらを継続的インテグレーションしようとしたときにこの遅さはたまりません。いくつか手段はあってお金持ちの皆様であれば、大富豪アプローチということで、仮想マシンを動かす母艦にXeon E5-2697 v2を積んだ高性能マシンを使ったりもできるのですが、普通に考えれば、VirtualBoxよりも軽量な仮想環境を使うのが有力なアプローチです。

今回はLXCを使って軽量な仮想環境を手に入れる方法を紹介します。

LXCのインストール

LXC自体の説明はこの辺とかこの辺を参照ください。 インストール対象の母艦はUbuntu 12.04 LTSです。

sudo apt-get install lxc

sudoの設定変更

sudoのバージョンが1.8.4未満の場合、/etc/sudoersファイルの変更が必要です。
sudo visudo

として、以下を追記します。

Defaults   !tty_tickets

vagrant-lxcのインストール

VagrantからLXCを使うためのプラグイン、vagrant-lxcをインストールします。いつもどおりのコマンドです。
vagrant plugin install vagrant-lxc

これでもろもろ準備完了しました。

Vagrantfileの準備

Vagrantで仮想マシンを起動するには、言うまでもなくVagrantfileが必要です。 以下の内容で適当な場所に作成しましょう。もちろん
vagrant init quantal64

を実行して雛形を作成し自分で編集しても大丈夫です。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "quantal64"
  config.vm.box_url = "http://bit.ly/vagrant-lxc-quantal64-2013-07-12"
  config.vm.synced_folder "../data", "/vagrant_data"
end

起動!!

起動は普段とほとんど変わりません。異なるproviderを使う場合は、--provider=XXXのように指定するか、`VAGRANT_DEFAULT_PROVIDER`環境変数を指定しておくかのどちらかになります。
vagrant up --provider=lxc

僕のしょぼい実験環境(Core2 Duo E8450 / メモリ8G / SSD)で、15秒くらいで起動します。halt→upだと約10秒。

まとめ

VirtualBoxより起動時間が圧倒的に短いことが分かったかと思いますが、これが生きるのはテスト!!!!! ということで次回は自前のOSイメージを用意する方法とかChefのCookbookのテストに使うTest-Kitchenとこいつを組み合わせるとどんだけうれしいかという話を書こうかと思います。以上前フリ終わり。

アジャイルコーチングやトレーニングを提供しています

株式会社アトラクタでは、アジャイル開発に取り組むチーム向けのコーチングや、認定スクラムマスター研修などの各種トレーニングを提供しています。ぜひお気軽にご相談ください。

詳細はこちら