• 検索結果がありません。

目次 1. Serverspec とは 1.1. Serverspecとは 1.2. Serverspecで出来る事 2. セットアップ 2.1. 必要なもの 2.2. インストール 3. デモ 3.1. デモ環境について 3.2. テスト対象サーバーの登録 3.3. サンプルテストの中身 3.4.

N/A
N/A
Protected

Academic year: 2021

シェア "目次 1. Serverspec とは 1.1. Serverspecとは 1.2. Serverspecで出来る事 2. セットアップ 2.1. 必要なもの 2.2. インストール 3. デモ 3.1. デモ環境について 3.2. テスト対象サーバーの登録 3.3. サンプルテストの中身 3.4."

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

Serverspecでインフラテスト

2018年4月20日 株式会社フルマークス 大久保和彦

(2)

目次

1. Serverspecとは

1.1. Serverspecとは

1.2. Serverspecで出来る事

2. セットアップ

2.1. 必要なもの

2.2. インストール

3. デモ

3.1. デモ環境について

3.2. テスト対象サーバーの登録

3.3. サンプルテストの中身

3.4. サンプルテストの実行

3.5. エラーを解消する

3.6. 再度サンプルテストの実行

3.7. テスト対象サーバーの追加

4. まとめと課題

(3)

1. Serverspecとは

1.1. Serverspecとは

Rubyで実装されたサーバの状態をテストするためのフ

レームワーク

RubyのテストフレームワークであるRSpecの書き方に準

2018/4/19時点での最新バージョンは、2.41.3

(4)

1. Serverspecとは

1.2. Serverspecで出来る事

意図した設定や処理がサーバーに適切に反映されていることを確認

できます。

ホスト名が正しく設定されているか

サーバにあるパッケージがインストールされているか

ミドルウェアが起動しているか

自動起動の設定はできているか

TCPの何番ポートがLISTEN状態になっているか

などなど。これにより、ChefやAnsible等で構築したサーバーが正常

に稼働していることを保証できます。

また、サーバーの設定変更を行った後でテストを実行することで既

存の設定に問題が発生していないかどうかも確認することができま

(5)

2. セットアップ

2.1. 必要なもの

以下を

Serverspecの実行環境にインストールします

Ruby

RubyGems

Bundler

※今回は、全てchefdk-2.4.17-1-x64.msiに同梱のものを使用しました

$ ruby -v

ruby 2.4.2p198 (2017-09-14 revision 59899) [x64-mingw32]

$ gem -v

2.6.14

$ bundler -v

(6)

2. セットアップ

2.2. インストール

Gemfileを書いてBundlerでインストールします。

Gemfileの内容

インストール

$ mkdir -p /d/work/git/pri/serverspec-sample/serverspec/ $ cd /d/work/git/pri/serverspec-sample/serverspec/ $ vim Gemfile source "https://rubygems.org" gem 'serverspec' gem 'rake' gem 'highline'

(7)

3. デモ

3.1. デモ環境について

ServerSpecの実行環境

Windows (AWS Workspaces)

テスト対象として

RHEL7のWEBサーバーを2台用意

dev-web01

(8)

3. デモ

3.2. テスト対象サーバーの登録

serverspec-initを実行してテスト対象のサーバー、dev-web01を

登録します。

$ bundle exec serverspec-init Select OS type:

1) UN*X 2) Windows Select number: 1

Select a backend type: 1) SSH

2) Exec (local) Select number: 1

(9)

3. デモ

3.3.サンプルテストの中身

httpd(Apache)のテストが書かれてます。

$ cat spec/dev-web01/sample_spec.rb require 'spec_helper'

describe package('httpd'), :if => os[:family] == 'redhat' do it { should be_installed }

end

describe package('apache2'), :if => os[:family] == 'ubuntu' do it { should be_installed }

end

describe service('httpd'), :if => os[:family] == 'redhat' do it { should be_enabled }

it { should be_running } end

(10)

3. デモ

3.3.サンプルテストの中身

(つづき)

describe service('apache2'), :if => os[:family] == 'ubuntu' do it { should be_enabled }

it { should be_running } end

describe service('org.apache.httpd'), :if => os[:family] == 'darwin' do it { should be_enabled } it { should be_running } end describe port(80) do it { should be_listening } end

(11)

3. デモ

3.4.サンプルテストの実行

rakeコマンドを使用してサンプルテストを実行してみます。

4 failuresとなっていて、失敗してます。

$ bundle exec rake spec Package "httpd"

should be installed (FAILED - 1) Service "httpd"

should be enabled (FAILED - 2) should be running (FAILED - 3) Port "80"

should be listening (FAILED - 4) (途中省略)

Finished in 0.49597 seconds (files took 2.71 seconds to load) 4 examples, 4 failures

(12)

3. デモ

3.5.エラーを解消する

サーバー側で設定を行い、エラーを解消してみます。

httpdのインストール

httpdサービスを起動

httpdサービスの自動起動を有効化

# yum install -y httpd

# systemctl start httpd.service

(13)

3. デモ

3.6. 再度サンプルテストの実行

再びサンプルテストを実行します。

0 failuresとなっていて、成功するようになりました。

無事対応完了です。

$ bundle exec rake spec Package "httpd" should be installed Service "httpd" should be enabled should be running Port "80" should be listening

Finished in 0.42497 seconds (files took 2.68 seconds to load) 4 examples, 0 failures

(14)

3. デモ

3.7. テスト対象サーバーの追加

テスト対象のサーバー、live-web01を登録します。

dev-web01の時と同じように以下を実施してテストが全て成功する

ようにします。

テスト対象サーバーの登録

サーバー設定

httpdのインストール

httpdサービスを起動

httpdサービスの自動起動を有効化(enabled)

サンプルテストの実行

(15)

3. デモ

3.7. テスト対象サーバーの追加(テストの実行結果)

テストを実行すると、2台のサーバーのテストが実行され成功します。

$ bundle exec rake spec

Package "httpd" should be installed Service "httpd" should be enabled should be running Port "80" should be listening

Finished in 0.51004 seconds (files took 7.37 seconds to load) 4 examples, 0 failures Package "httpd" should be installed Service "httpd" should be enabled should be running Port "80" should be listening

(16)

4. まとめ

まとめ

ServerSpec実行環境から、2台のLinuxサーバーに対して自動

テストを実行しました。

今後の課題

サーバー単位でテストを実行したい(このままだと全サー

バーのテストが実行されてしまう)

環境(

DEV/STG/LIVE)や、サーバー単位の固有情報の扱いをどう

するか

同じテストケースはサーバーや環境をまたいで共有したい

参照

関連したドキュメント

12―1 法第 12 条において準用する定率法第 20 条の 3 及び令第 37 条において 準用する定率法施行令第 61 条の 2 の規定の適用については、定率法基本通達 20 の 3―1、20 の 3―2

1着馬の父 2着馬の父 3着馬の父 1着馬の母父 2着馬の母父

「1 カ月前」「2 カ月前」「3 カ月 前」のインデックスの用紙が付けられ ていたが、3

№3 の 3 か所において、№3 において現況において環境基準を上回っている場所でございま した。ですので、№3 においては騒音レベルの増加が、昼間で

さらに、1 号機、2 号機及び 3

1-2.タービン建屋 2-2.3号炉原子炉建屋内緊急時対策所 1-3.コントロール建屋 2-3.格納容器圧力逃がし装置

画像 ノッチ ノッチ間隔 推定値 1 1〜2 約15cm. 1〜2 約15cm 2〜3 約15cm

が 2 年次 59%・3 年次 60%と上級生になると肯定的評価は大きく低下する。また「補習が適 切に行われている」項目も、1 年次 69%が、2 年次