はじめに
test-kitchen
と LXC
でお手軽 cookbook
テスト環境を構築してみたものの色々とハマっているので整理するつもりでメモ。
尚、試した環境としては下記の通り。
環境(1)
- Ubuntu 13.10
- LXC 1.0.0.alpha2
- test-kitchen 1.0.0.beta.4
- berkshelf 2.0.10
環境(2)
- Ubuntu 13.04
- LXC 0.9.0
- test-kitchen 1.0.0.beta.4
- berkshelf 2.0.10
以下はあくまでも手元で試した結果なので、試す環境によっては異なる結果も予想されるのであくまでも参考程度で...
メモ
動くコンテナ、動かないコンテナ
今のところちゃんと cookbook
のテストが出来るコンテナ OS と出来ないコンテナ OS が存在する。試したところ以下の通りとなった。
コンテナの OS | 結果 | 備考 |
---|---|---|
Ubuntu 13.10 | ○ | |
Ubuntu 13.04 | ○ | |
Ubuntu 12.04 | ○ | |
Debian 6.0(Squeeze) | × | Could not determine IP address for LXC container のエラー |
Debian 7.0(Wheezy) | × | Could not determine IP address for LXC container のエラー |
CentOS 6.4 | × | Could not determine IP address for LXC container のエラー |
上記のように Could not determine IP address for LXC container
というエラーが出てしまい bundle exec kitchen create
でコケる...orz
berkshelf とか test-kitchen とか nokogiri とか...
berkshelf が load 出来ない...
bundle exec kitchen setup
を実行すると以下のようなエラーとなってしまった。
E, [2013-11-09T22:22:24.995597 #22788] ERROR -- Kitchen: ------Exception------- E, [2013-11-09T22:22:24.995645 #22788] ERROR -- Kitchen: Class: Kitchen::ActionFailed E, [2013-11-09T22:22:24.995676 #22788] ERROR -- Kitchen: Message: Failed to complete #converge action: [Could not load Berkshelf] E, [2013-11-09T22:22:24.995704 #22788] ERROR -- Kitchen: ---Nested Exception--- E, [2013-11-09T22:22:24.995739 #22788] ERROR -- Kitchen: Class: Kitchen::UserError E, [2013-11-09T22:22:24.995764 #22788] ERROR -- Kitchen: Message: Could not load Berkshelf E, [2013-11-09T22:22:24.995789 #22788] ERROR -- Kitchen: ------Backtrace-------
対処としては berkshelf
をバージョンアップ。
gem 'berkshelf', '~> 2.0'
として bundle install
する。
test-kitchen をバージョンアップ
ついでに test-kitchen
も v.1.0.0.beta.4
がリリースされていたのでそちらへバージョンアップしてみることにした。
gem 'test-kitchen', '1.0.0.beta.4'
同じように bundle install
する。
今度は nokogiri だよ、おっかさん
test-kitchen
をバージョンアップしたところ以下のようなメッセージに変わる。
E, [2013-11-09T22:12:10.875510 #20868] ERROR -- default-ubuntu-master: ------Exception------- E, [2013-11-09T22:12:10.875550 #20868] ERROR -- default-ubuntu-master: Class: Kitchen::UserError E, [2013-11-09T22:12:10.875581 #20868] ERROR -- default-ubuntu-master: Message: Could not load Berkshelf E, [2013-11-09T22:12:10.875610 #20868] ERROR -- default-ubuntu-master: ---Nested Exception--- E, [2013-11-09T22:12:10.875785 #20868] ERROR -- default-ubuntu-master: Class: LoadError E, [2013-11-09T22:12:10.875824 #20868] ERROR -- default-ubuntu-master: Message: libexslt.so.0: cannot open shared object file: No such file or directory - /var/lib/gems/1.9.1/gems/nokogiri-1.6.0/lib/nokogiri/nokogiri.so
/var/lib/gems/1.9.1/gems/nokogiri-1.6.0/lib/nokogiri/nokogiri.so
このファイル自体は存在しているので nokogiri 自体のインストールはできているはずだが...改めて nokogiri をインストールしてみる。
sudo gem install nokogiri --no-ri --no-rdoc -V
インストールのログを見ていると関係するライブラリをリンクして改めて make
して make install
しているようなので nokogiri は一筋縄ではいかない gem
なのかもしれない...。
nokogiri を再インストール後は bundle exec kitchen setup
が通るようになりましたとさ...
最後に
Ubuntu
系のコンテナしか現状使えないのは悔しいtest-kitchen
の環境を整えるのが辛い...