39
Serverspec を使ってサーバ 5000 台の Bacula クライントをテスト Version 1.0 2015/03/02 サワダ ケン (@ksawada1979)

Serverspecを使ってサーバ5000台のBaculaクライアントをテスト

Embed Size (px)

Citation preview

Serverspecを使ってサーバ5000台のBaculaクライントをテスト

Version 1.02015/03/02

サワダ ケン (@ksawada1979)

はじめに

本書は自動サーバ構成テストツールであるServerspecを使用して、サーバ5000台にインストール済みのBaculaクライアントに対してテストする手順について記載します。

2

はじめに

Baculaドキュメントのご紹介

Baculaの基本、インストールおよび設定

http://www.slideshare.net/kensawada14/140801oscbacula/

Bacula GUI管理ツールのインストールおよび設定

http://www.slideshare.net/kensawada14/141114baculabaculagui

Ansibleを使ってサーバ100台にBaculaクライアントをインストールhttp://www.slideshare.net/kensawada14/150105-bacula-clientansiblesetting

3

はじめに

今回もすいません・・・

タイトルにサーバ5000台になんて書いてしまいましたが、実際は仮想でも用意するのが大変だったので、本書では10台のサーバのテスト手順を記載します。

4

大変申し訳ありません今回も同じいい訳ですが、結局は10台も5000台も手順は一緒です。

テストを自動化するための手順を記載してますので、本書の手順と同じ手順で5000台のサーバをテストすることは可能です。

ただ実際に動作確認できていないので、正直に書かせていただきました。

はじめに

本書ではサーバという言葉が度々出てきます。混乱をさけるために最初に以下の様に定義します。

Baculaサーバ、Serverspecサーバ

BaculaサーバとServerspecがインストールされたサーバをさします。

BaculaとServerspecを1台のサーバにインストールします。

バックアップ対象サーバ、テスト対象サーバ(Baculaクライアントインストール済み)

Baculaクライアントインストール済みで、バックアップ対象であり、Serverspecでテストを実施するサーバをさします。

本書ではバックアップ対象であり、かつテスト対象となるサーバは10台を想定しています。

5

目次

目的

なぜServerspecなのか?

構築概要

SSH鍵交換

Serverspecインストール

Serverspec初期化

Serverspec設定

Serverspec実行

6

・・・・・・・・ 7

・・・・・・・・ 10

・・・・・・・・ 12

・・・・・・・・ 15

・・・・・・・・ 24

・・・・・・・・ 27

・・・・・・・・ 30

・・・・・・・・ 38

目的

7

目的

前回Ansibleを使って100台のサーバにBaculaクライントを簡単にインストールしようという手順を作成しました。

前回の資料は以下です。http://www.slideshare.net/kensawada14/150105-bacula-clientansiblesetting

果たして本当に正しく設定されているでしょうか?決してAnsibleの性能を疑っているわけではないですが、サーバの設定をしてテストもせずに、そのまま使うことは個人用途以外では余り無いと思います。

何台ものサーバのテストをするのは手間がかかります。そこでテストを軽減するために、Serverspecを使って10台のサーバを一気にテストすることを目的とします。

8

目的

Serverspecを使って以下の4点をテストします。

・Baculaクライアントはインストールされているか?(bacula-client)・Baculaクライアントは自動起動するように設定されているか?・Baculaクライアントデーモンは起動しているか?(bacula-fd)・Baculaクライアントの使うポート9102は空いているか?

9

なぜServerspecなのか?

10

なぜServerspecなのか?

自動サーバ構成テストツールで有名なもの・・・・・・ってServerspecしかないですよね?

私が知らないだけかもしれませんが(笑)

情報も多いですし、今回は選択の余地なしでServerspecを使用します。Serverspecはサーバ側にインストールしてしまえば、テスト対象サーバ側にはインストール及び設定は不要です。

11

構築概要

12

構築概要

13

構成図

Baculaサーバ、Serverspecサーバ

IPアドレス 192.168.0.10

IPアドレス 192.168.0.151~160

本手順書は上記の構成を想定した手順書になります。

ServerspecはBaculaサーバにインストールします。

テスト対象サーバ側にServerspec関連のインストールおよび設定は不要です。

バックアップ対象サーバ、テスト対象サーバ(Baculaクライアントインストール済み)

Serverspecで各サーバをテスト

構築概要

14

Virtualbox上に以下の11台のサーバを構築します。

・Baculaサーバ、Serverspecサーバ(1台で兼用)OS: CentOS6.6(x86_64) minimalインストール

ベースパッケージ追加DB: MySQL 5.1.73

自動サーバ構成テストツール: Serverspec 2.8.2Bacula 5.0.0

・バックアップ対象サーバ かつ テスト対象サーバ(10台)OS:CentOS6.6(x86_64) minimalインストール

ベースパッケージ追加

SSH鍵交換

15

SSH鍵交換

16

Serverspecを使用する前に、Serverspecがインストールされているサーバとテスト対象サーバ側でSSHの鍵交換を行い、パスワードなしでログインできる状態にします。

※鍵交換なしでもServerspecを使用できますが、テストを実行するたびに全てのサーバに対してパスワードが必要になるために、ここでは鍵交換を行います。

SSH鍵交換

17

# ssh-keygen –t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Created directory '/root/.ssh'.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.

<省略>#

まずServerspecサーバでsshの鍵を作成します。

※既にテスト対象サーバ側との鍵交換が完了している場合は本手順は不要です。

以下のコマンドで鍵を作成します。

コマンド入力後は何も入力せずに「Enterキー」で問題ありません。

SSH鍵交換

18

Serverspecサーバで鍵を作成したら、次に「ssh-copy-id」コマンドを使用してテスト対象サーバ側に鍵をコピーします。ここでは「bacula_client_lists」と「ssh-key.sh」というふたつのファイルを用意しテスト対象サーバ10台に一度に鍵をコピーします。

ファイルの置き場は任意で構いませんが本書では/tmpに配置します。

各ファイルの詳細は次のページに記載します。

SSH鍵交換

19

/tmp/bacula_client_lists

192.168.0.151192.168.0.152192.168.0.153192.168.0.154192.168.0.155192.168.0.156192.168.0.157192.168.0.158192.168.0.159192.168.0.160

実際に5000台のサーバをテストする場合にはここで5000台のサーバを記述します。

SSH鍵交換

20

/tmp/ssh-key.sh

for i in `cat /tmp/bacula_client_lists`do

ssh-copy-id -i /root/.ssh/id_rsa.pub root@$idone

SSH鍵交換

21

「bacula_client_lists」と「ssh-key.sh」を準備したら以下のコマンドで実行します。テスト対象サーバ側にServerspecサーバの鍵を登録します。

# cd /tmp# ./ssh-key.shThe authenticity of host ‘<ホスト名> can't be established.RSA key fingerprint is f3:06:4b:44:8b:18:4b:2c:dc:a6:e8:de:18:7a:d6:bf.Are you sure you want to continue connecting (yes/no)? yes

Yesを入力し「Enterキー」を押下します。ssh-key.shが実行できない場合はファイルの権限を確認してください。

SSH鍵交換

22

引き続きテスト対象サーバ側のパスワードを入力します。

Warning: Permanently added ‘<ホスト名>' (RSA) to the list of known hosts.root@<ホスト名>‘s password: <テスト対象サーバ側パスワード>Now try logging into the machine, with “ssh ‘root@<ホスト名>'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.#

テスト対象サーバ側パスワードの入力をサーバの台数分繰り替えします。

SSH鍵交換

23

SSH鍵登録の確認をします。任意の数台のテスト対象サーバにパスワードなしでログインできることを確認します。

# ssh [email protected]#

# ssh [email protected]#

# ssh [email protected]#

ここでは3台だけ確認しております。

Serverspecインストール

24

Serverspecインストール

25

# yum -y install ruby

# yum -y install rubygems

Ruby、rubygems、RSpecをインストール後にServerspecをインストールします。

まず以下のコマンドでrubyをインストールします。

次に以下のコマンドでrubygemsをインストールします。

# gem install rake

次にgemを使ってRSpecをインストールします。

各コマンド実行後の画面は省略しています。

Serverspecインストール

26

# gem install serverspec

最後にServerspecをインストールします。

以下のコマンドでgemを使ってServerspecをインストールします。

Serverspec初期化

27

Serverspec初期化

28

Serverspecを実行するために、まず初期化が必要になります。以下のコマンドで初期化します。ここではroot配下に「serverspec」というディレクトリを作成した上で、初期化を実行します。ディレクトリの作成場所は任意で問題ありません。

# mkdir -p /root/serverspec# cd /root/serverspec# serverspec-init

Serverspec初期化

29

以下実行例になります。

# serverspec-initSelect OS type:

1) UN*X2) Windows

Select number: 1 ←テスト対象サーバはLinuxのため「1」を入力し「Enterキー」を押下します。

Select a backend type:

1) SSH2) Exec (local)

Select number: 1 ←SSHで接続するため「1」を入力し「Enterキー」を押下します。

Vagrant instance y/n: n ←Vagrantで実行していないので「n」を入力し「Enterキー」を押下します。Input target host name: 192.168.0.151 ←テスト対象となるホスト名を入力します。ここで

は192.168.0.151と入力し「Enterキー」を押下します。+ spec/+ spec/192.168.0.151/ + spec/192.168.0.151/sample_spec.rb+ spec/spec_helper.rb+ Rakefile#

Serverspec設定

30

Serverspec設定

31

Serverspecの設定を行います。先ほど「serverspec-init」を実行したディレクトリに「spec」というフォルダがあります。「spec」フォルダのさらに下にホスト名のフォルダがあり、その下に設定ファイルがあります。以下のコマンドでServerspecの設定ファイルのディレクトリに移動します。

# cd /root/serverspec/spec/192.168.0.151

Serverspecの設定ファイルである「sample_spec.rb」があることを確認します。

# ls# sample_spec.rb

Serverspec設定

32

viで「sample_spec.rb」を以下の様に修正します。

# vi sample_spec.rbrequire 'rubygems'require 'spec_helper'

describe package('bacula-client') doit { should be_installed } ← Baculaクライアントはインストールされているか?

end

describe service('bacula-fd') doit { should be_enabled } ←自動起動するように設定されているか?it { should be_running } ← Baculaクライアントデーモンは起動しているか?

end

describe port(9102) doit { should be_listening } } ← Baculaの使うポート9102は空いているか?

end

Serverspec設定

33

前ページまでで1台分の設定が終わりました。次に残りの9台分の設定を行います。

まずspecフォルダに移動します。

# cd /root/serverspec/spec

最初に設定した「192.168.0.151」のフォルダが存在することを確認します。

# ls192.168.0.151 spec_helper.rb

192.168.0.151のフォルダをコピーすることにより9台分の設定を作成します。

Serverspec設定

34

残り9台分のホストリストを作成します。「/root/serverspec」ディレクトリにtest.lstというファイルを作成します。ファイル名は任意のもので構いません。

Serverspec設定

35

/root/serverspec/test.lst

192.168.0.152192.168.0.153192.168.0.154192.168.0.155192.168.0.156192.168.0.157192.168.0.158192.168.0.159192.168.0.160

実際に5000台のサーバをテストする場合にはここで残りの4999台のサーバを記述します。SSH鍵交換のページで作成した「bacula_client_lists」を流用すると便利です。

Serverspec設定

36

以下のコマンドで9台分の設定ファイルをコピーします。

# cd /root/serverspec# for i in `cat test.lst`> do> cp –r 192.168.0.151 $i> done#

Serverspec設定

37

10台分の設定ファイルが存在することを確認します。

# ls192.168.0.151 192.168.0.152 192.168.0.153 192.168.0.154192.168.0.155 192.168.0.156 192.168.0.157 192.168.0.158192.168.0.159 192.168.0.160 spec_helper.rb#

Serverspec実行

38

Serverspec実行

39

# cd /root/serverspec# rake spec

Package "bacula-client"should be installed

Service "bacula-fd"should be enabledshould be running

Port "9102"should be listening

Finished in 0.19085 seconds (files took 0.21305 seconds to load)4 examples, 0 failures

Serverspecの設定が完了したらServerspecを実行します。以下の「rake spec」コマンドで実行します。

上記は1台分の例になります。実際は設定したサーバの台数分結果が出力されます。エラーが発生していないことを確認します。「0 failures」となっていれば問題ありません。