cookbookのテストにkitchen-dockerを使ってみた。
今度は"kitchen-docker が動きました - ようへいの日々精進XP"を見て、dockerを利用しcookbookを高速にテストできるkitchen-dockerを知った。
まだ開発されて間もないという事も有り、いろいろ引っかかったのでメモしておく。
試しにapache2のcookbookをテストしてみる。以下、試した手順。
apache2のcookbookをcloneする。
$ git clone https://github.com/opscode-cookbooks/apache2.git
Gemfileを編集し追記する。
Gemfile:
source 'https://rubygems.org' gem 'berkshelf', '~> 2.0' gem 'chefspec', '~> 3.0' gem 'foodcritic', '~> 3.0' gem 'rubocop', '~> 0.14' group :integration do gem 'test-kitchen' gem 'kitchen-docker' end
bundle installを実行
$ cd apache2 $ bundle install $ bundle exec kitchen init
その後、生成された.kitchen.ymlを以下の様に修正する。
.kitchen.yml
--- driver: name: docker provisioner: name: chef_solo platforms: - name: ubuntu - name: ubuntu suites: - name: default run_list: - recipe[apache2::default] attributes:
docker Containerを生成する。
$ sudo kitchen create
kitchen-lxcと異なり、設定は全自動で行われるため特に作業は不要。
その後、"sudo bundle exe kitchen test"を実行するとテストが始まった。
$ sudo bundle exe kitchen test -----> Cleaning up any prior instances of <default-ubuntu> -----> Destroying <default-ubuntu>... 658d50cfaf0c23a68a13803760e585726c537f1f1f95251233fd113efe5ee4c0 658d50cfaf0c23a68a13803760e585726c537f1f1f95251233fd113efe5ee4c0 Finished destroying <default-ubuntu> (0m0.33s). -----> Testing <default-ubuntu> -----> Creating <default-ubuntu>... Step 1 : FROM base ---> b750fe79269d Step 2 : ENV DEBIAN_FRONTEND noninteractive ---> Using cache ---> 364cfbe41265 Step 3 : RUN dpkg-divert --local --rename --add /sbin/initctl ---> Using cache ---> 0c92b3a868ad Step 4 : RUN ln -sf /bin/true /sbin/initctl ---> Using cache ---> 5a0cb857a64d Step 5 : RUN apt-get update ---> Using cache ---> 7c0c1b8a66c6 Step 6 : RUN apt-get install -y sudo openssh-server curl lsb-release ---> Using cache ---> 757baa46be90 Step 7 : RUN mkdir -p /var/run/sshd ---> Using cache ---> f8952535dcb3 Step 8 : RUN useradd -d /home/kitchen -m -s /bin/bash kitchen ---> Using cache ---> d5bee36f6c4a Step 9 : RUN echo kitchen:kitchen | chpasswd ---> Using cache ---> efb754b5baa4 Step 10 : RUN echo 'kitchen ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers ---> Using cache ---> 70b8ec0cd8fe (一部省略) [2013-12-14T14:25:53+00:00] INFO: service[apache2] restarted - restart service service[apache2] [2013-12-14T14:25:53+00:00] INFO: Chef Run complete in 31.631908462 seconds [2013-12-14T14:25:53+00:00] INFO: Running report handlers [2013-12-14T14:25:53+00:00] INFO: Report handlers complete Chef Client finished, 18 resources updated Finished converging <default-ubuntu> (1m8.56s). -----> Setting up <default-ubuntu>... Finished setting up <default-ubuntu> (0m0.00s). -----> Verifying <default-ubuntu>... Finished verifying <default-ubuntu> (0m0.00s). -----> Destroying <default-ubuntu>... 994af29ab114f7b17ca525f8420c1810e0ea9530c26ab6dcb7f4ced3b4f7dad9 994af29ab114f7b17ca525f8420c1810e0ea9530c26ab6dcb7f4ced3b4f7dad9 Finished destroying <default-ubuntu> (0m1.38s). Finished testing <default-ubuntu> (1m10.66s). -----> Kitchen is finished. (8m43.47s)
"Kitchen is finished"と表示された、成功!
ただ、kitche-lxcが50sec程度で完了していたのに9分近く処理に掛かってるのはなぁ。
今後の改良に期待かな。