はじめに
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
目的
前回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なのか?
自動サーバ構成テストツールで有名なもの・・・・・・ってServerspecしかないですよね?
私が知らないだけかもしれませんが(笑)
情報も多いですし、今回は選択の余地なしでServerspecを使用します。Serverspecはサーバ側にインストールしてしまえば、テスト対象サーバ側にはインストール及び設定は不要です。
11
構築概要
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鍵交換
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インストール
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初期化
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設定
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実行
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」となっていれば問題ありません。