狠狠撸

狠狠撸Share a Scribd company logo
Serverspecを使ってサーバ5000台の
Baculaクライントをテスト
Version 1.0
2015/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.2
Bacula 5.0.0
?バックアップ対象サーバ かつ テスト対象サーバ(10台)
OS:CentOS6.6(x86_64) minimalインストール
ベースパッケージ追加
SSH鍵交換
15
SSH鍵交換
16
Serverspecを使用する前に、Serverspecがインストールされているサーバとテス
ト対象サーバ側でSSHの鍵交換を行い、パスワードなしでログインできる状態にしま
す。
※鍵交換なしでもServerspecを使用できますが、テストを実行するたびに全ての
サーバに対してパスワードが必要になるために、ここでは鍵交換を行います。
SSH鍵交換
17
# ssh-keygen –t rsa
Generating 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.151
192.168.0.152
192.168.0.153
192.168.0.154
192.168.0.155
192.168.0.156
192.168.0.157
192.168.0.158
192.168.0.159
192.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@$i
done
SSH鍵交換
21
「bacula_client_lists」と「ssh-key.sh」を準備したら以下のコマンドで実行しま
す。テスト対象サーバ側にServerspecサーバの鍵を登録します。
# cd /tmp
# ./ssh-key.sh
The 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 root@192.168.0.151
#
# ssh root@192.168.0.152
#
# ssh root@192.168.0.153
#
ここでは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-init
Select OS type:
1) UN*X
2) Windows
Select number: 1 ←テスト対象サーバはLinuxのため「1」を入力し「Enterキー」を押下します。
Select a backend type:
1) SSH
2) 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.rb
require 'rubygems'
require 'spec_helper'
describe package('bacula-client') do
it { should be_installed } ← Baculaクライアントはインストールされているか?
end
describe service('bacula-fd') do
it { should be_enabled } ←自動起動するように設定されているか?
it { should be_running } ← Baculaクライアントデーモンは起動しているか?
end
describe port(9102) do
it { should be_listening } } ← Baculaの使うポート9102は空いているか?
end
Serverspec設定
33
前ページまでで1台分の設定が終わりました。
次に残りの9台分の設定を行います。
まずspecフォルダに移動します。
# cd /root/serverspec/spec
最初に設定した「192.168.0.151」のフォルダが存在することを確認します。
# ls
192.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.152
192.168.0.153
192.168.0.154
192.168.0.155
192.168.0.156
192.168.0.157
192.168.0.158
192.168.0.159
192.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台分の設定ファイルが存在することを確認します。
# ls
192.168.0.151 192.168.0.152 192.168.0.153 192.168.0.154
192.168.0.155 192.168.0.156 192.168.0.157 192.168.0.158
192.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 enabled
should 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」となっていれば問題ありません。

More Related Content

厂别谤惫别谤蝉辫别肠を使ってサーバ5000台の叠补肠耻濒补クライアントをテスト