TenForward

技術ブログ。はてなダイアリーから移転しました

Plamo Linux 5.1 で vagrant-lxc を使う

(2013-10-30追記) lxc 1.0 の開発が進み,Plamo の lxc パッケージも 0.9.0 から 1.0 開発版になったのに伴い,vagrant-lxc は動かなくなっていましたが,vagrant-lxc のバージョンアップでまた動くようになっています.とりあえず手元では vagrant-lxc 0.6.4 上で http://bit.ly/vagrant-lxc-precise64-2013-10-23 の box を使ってコンテナが起動することを確認しています.
ちょっとしたテストで vagrant を使うのなら,わざわざ (コストの高いハイパーバイザー型の) 仮想マシンを使うこともなくコンテナですよねー,というわけで,vagrant-lxc を使ってみました.

Plamo の lxc パッケージはなるべく Ubuntu に合わせるように作ってありますので (パクっているともいう :p),Ubuntu の特定バージョンでしか動かないとか言われている vagrant-lxc も楽々でした.

ただし,lxc-destroy コマンドのバグのため,"vagrant destroy" がうまく動きません.対策したパッケージを lxc-0.8.0-(i586|x86_64)-P8.tgz として置いてありますので,それをお使いください.

さて,特に起動までは難しくありません.

  1. vagrant 実行ユーザで sudo が実行できるように設定.
  2. まずはプラグインのインストール
    $ vagrant plugin install vagrant-lxc
    Installing the 'vagrant-lxc' plugin. This can take a few minutes...
    Installed the plugin 'vagrant-lxc (0.5.0)'!
  3. box を取得
    $ vagrant box add precise64 http://bit.ly/vagrant-lxc-precise64-2013-07-12
    Downloading or copying the box...
    Extracting box...te: 3533k/s, Estimated time remaining: 0:00:01)
    Successfully added box 'precise64' with provider 'lxc'!
  4. Vagrantfile の作成
    vi Vagrantfile
    $ cat Vagrantfile
    Vagrant.configure("2") do |config|
    config.vm.box = "precise64"
    end
  5. up して ssh
    $ vagrant up --provider=lxc
    Bringing machine 'default' up with 'lxc' provider...
    [default] Importing base box 'precise64'...
    [default] Setting up mount entries for shared folders...
    [default] -- /vagrant
    [default] Starting container...
    [default] Waiting for container to start. This should not take long.
    [default] Container started and ready for use!
    karma@enterprise:~/work/vagrant/lxc$ vagrant ssh
    Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.10.9-plamo64-karma x86_64)

    * Documentation: https://help.ubuntu.com/
    vagrant@precise:~$
    $ exit
    logout
    Connection to 10.0.100.213 closed.

コンテナは,Ubuntu と同様に Plamo の lxc パッケージで作成可能なブリッジ lxcbr0 に接続されます.

環境によるのかもしれませんが,lxc-attach が積極的に使われています.もしかしたら使えるかどうかのチェックがあって,使えない場合は使わないのかもしれませんが,そこまで調べてません.Plamo 5.1 環境で最新のカーネルにしていれば,この辺りは使えるでしょうから問題ないと思います (手元は Plamo 標準カーネルじゃないので問題ある時はご報告を ^^;).

たまにエラーが...

手元では /var/lib/lxc が Btrfs だからか,よくわかりませんが,vagrant up して vagrant halt したあとに再度 vagrant up しようとすると,Read only だ,とかいうエラーが出て up も destroy も出来ないことがたまに起こります.

この時は mount -o remount /var/lib/lxc すると問題なくなります.なので btrfs 側の問題なのかも... (特にエラーは出てないけど...)