かげログ.

なにかんがえてるの @umireon

今日考えたこと 1/3

Serverspec with test-kitchen

本節では,Serverspecによるインフラテスティングを,test-kitchenに適用する方法について説明する.より具体的には,test verifyコマンドの実行により,Serverspecで記載されたテストにしたがい,サンドボックス環境の検証が行われることを目標とする.test-kitchenでは,例えばdefaultレシピに対するserverspecによるテストコードは,test/integration/default/serverspec以下に格納することとなっている.まず,serverspec全体に対する設定を記述する,spec_helper.rbを同ディレクトリに作成する.次に,spec_helper.rbの内容を示す.

require 'serverspec'
set :backend, :exec

また,テスト本体は,同ディレクトリの*_spec.rbに書くことになっている.ここでは例として,chef-clientが起動しているかを確かめる,chef-client_spec.rbを作成する.次に,chef-client_spec.rbの内容を示す.

require 'spec_helper'
describe service('chef-client') do
  it { should be_running }
end

以上のファイルを作成し,cookbookのルートでkitchen verifyコマンドを発行することによって,テストを実行することができる.次に,test-kitchenによるインフラテストの成功例を示す.

$ kitchen verify
-----> Starting Kitchen (v1.2.1)
-----> Verifying <default-ubuntu-1404>...
       Removing /tmp/busser/suites/serverspec
Uploading /tmp/busser/suites/serverspec/chef-clinet_spec.rb (mode=0644)
Uploading /tmp/busser/suites/serverspec/spec_helper.rb (mode=0644)
-----> Running serverspec test suite
/opt/chef/embedded/bin/ruby -I/tmp/busser/suites/serverspec -I/tmp/busser/gems/gems/rspec-support-3.1.2/lib:/tmp/busser/gems/gems/rspec-core-3.1.7/lib /opt/chef/embedded/bin/rspec --pattern /tmp/busser/suites/serverspec/\*\*/\*_spec.rb --color --format documentation --default-path /tmp/busser/suites/serverspec

Service "chef-client"
  should be running

Finished in 0.16682 seconds (files took 0.36192 seconds to load)
1 example, 0 failures
       Finished verifying <default-ubuntu-1404> (0m3.31s).
-----> Verifying <default-centos-66>...
       Removing /tmp/busser/suites/serverspec
       Uploading /tmp/busser/suites/serverspec/chef-clinet_spec.rb (mode=0644)
       Uploading /tmp/busser/suites/serverspec/spec_helper.rb (mode=0644)
-----> Running serverspec test suite
       /opt/chef/embedded/bin/ruby -I/tmp/busser/suites/serverspec -I/tmp/busser/gems/gems/rspec-support-3.1.2/lib:/tmp/busser/gems/gems/rspec-core-3.1.7/lib /opt/chef/embedded/bin/rspec --pattern /tmp/busser/suites/serverspec/\*\*/\*_spec.rb --color --format documentation --default-path /tmp/busser/suites/serverspec

       Service "chef-client"
         should be running

       Finished in 0.15175 seconds (files took 0.37437 seconds to load)
       1 example, 0 failures
       Finished verifying <default-centos-66> (0m3.77s).
-----> Kitchen is finished. (0m8.07s)

easy-rsa 3 で使い捨てキーを生成する

easy-rsaを使用すると,簡単にSSL自己証明書を作成することができる.次に,wwwに対する証明書を生成するために必要なコマンドを示す.

$ git https://github.com/OpenVPN/easy-rsa.git
$ cd easy-rsa/easyrsa3
$ ./easyrsa init-pki
$ ./easyrsa build-ca nopass
$ ./easyrsa build-server-full www nopass

以上のコマンドにより,easy-rsa/easyrsa3/pki以下に公開鍵認証基盤が作成され,各種キーが格納される.CA証明書はeasy-rsa/easyrsa3/pki/ca.crt,wwwのサーバ証明書easy-rsa/easyrsa3/pki/issued/www.crt,wwwの秘密鍵easy-rsa/easyrsa3/pki/private/www.keyに格納される.