share facebook facebook twitter menu hatena pocket slack

2015.03.12 THU

boot2docker と test-kitchen で ansible の Playbook をテストする(3)〜 Serverspec …

川原 洋平

WRITTEN BY 川原 洋平

ども、 cloudpackかっぱ (@inokara) です。やっとここまで辿り着いた…前回の続き。

サンプル

ダラダラ文章よりもサンプルをこさえた。

サンプルの使い方は README.md を…(誰か英語教えて…)。

以下、サンプルをベースに記載。

Serverspec でテストする準備

spec_helper を書く

こちらを真似て以下のように設定する。

mkdir -p test/integration/default/serverspec/localhost
echo "require 'serverspec'" >> test/integration/default/serverspec/spec_helper.rb
echo "set :backend, :exec" >> test/integration/default/serverspec/spec_helper.rb

spec ファイルを呼び出すラッパーを書く

default.yml に以下の app_spec.rbcommon_spec.rb を呼び出す為の設定を行う。

cat << EOT > test/integration/default.yml
---
 - name: wrapper playbook for kitchen testing "app"
    hosts: localhost
    roles:
      - common
      - app
EOT

spec ファイルを書く

そして、以下のようにテストを書く。

test/integration/default/serverspec/localhost/app_spec.rb は以下の通り。

require 'spec_helper'

files=[
  'hogehoge.conf',
  'fugafuga.conf'
]
files.each do |file|
  describe file("/httpd/conf.d/#{file}") do
    it { should be_file }
  end
end

test/integration/default/serverspec/localhost/common_spec.rb は以下の通り。

require 'spec_helper'

describe file('/etc/monit.conf') do
  it { should be_file }
  it { should be_mode 600 }
end

packages = [
  'monit',
  'htop',
]
packages.each do |pkg|
  describe package pkg do
    it { should be_installed }
  end
end

準備完了。

test-kitchen して Serverspec まで一気にやる

kitchen create

kitchen create

kitchen create でテストするコンテナを作る。

kitchen converge

kitchen converge

kitchen converge を実行して Playbook を適用。
boot2docker と test-kitchen で ansible の Playbook をテストする(3)〜 Serverspec でテストする 〜: kitchen converge 実行結果

kitchen verify

kitchen verify

ここからが醍醐味。kitchen verify を利用して Serverspec を利用したテストを行う。
boot2docker と test-kitchen で ansible の Playbook をテストする(3)〜 Serverspec でテストする 〜: kitchen verify 実行結果

setlocale の警告がちょっと残念(出力を抑制したい)だけどテストも OK 牧場。

追伸

setlocale の警告がウザい問題

こちらを参考に glibc-common を再インストールすることで解決。

yum reinstall glibc-common

どうやら大元の centos コンテナイメージ作成時にこの辺りの設定諸々がざっくりと削除されているっぽい…。

あらためて kitchen converge

boot2docker と test-kitchen で ansible の Playbook をテストする(3)〜 Serverspec でテストする 〜: 警告対処後の kitchen converge 実行結果
美しい…。

あらためて kitchen verify

boot2docker と test-kitchen で ansible の Playbook をテストする(3)〜 Serverspec でテストする 〜: 警告対処後の kitchen verify 実行結果
美しい…。

ということで

test-kitchen を使えば ChefAnsible に関係なく Playbook や Cookbook のテスト、Serverspec まで実行出来るってのが体験出来ただけでも良かったばい。

元記事はこちらです。
boot2docker と test-kitchen で ansible の Playbook をテストする(3)〜 Serverspec でテストする 〜