今日考えたこと 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
に格納される.