Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,674 views

Published on

Serverspecを使ってサーバ5000台のBaculaクライアントを簡単にテストする手順書です。
Ansibleなどの構成管理ツールを使って自動で簡単に設定したサーバ群のテストに活用できます。
もちろん構成管理ツールを使っていない手動設定もテスト可能です。

Published in: Software
  • Be the first to comment

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

  1. 1. Serverspecを使ってサーバ5000台の Baculaクライントをテスト Version 1.0 2015/03/02 サワダ ケン (@ksawada1979)
  2. 2. はじめに 本書は自動サーバ構成テストツールであるServerspecを使用して、サーバ5000台 にインストール済みのBaculaクライアントに対してテストする手順について記載します。 2
  3. 3. はじめに 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
  4. 4. はじめに 今回もすいません・・・ タイトルにサーバ5000台になんて書いてしまいましたが、実際は仮想でも用意するのが大 変だったので、本書では10台のサーバのテスト手順を記載します。 4 大変申し訳ありません 今回も同じいい訳ですが、結局は10台も5000台も手順は一緒です。 テストを自動化するための手順を記載してますので、本書の手順と同じ手順で5000台 のサーバをテストすることは可能です。 ただ実際に動作確認できていないので、正直に書かせていただきました。
  5. 5. はじめに 本書ではサーバという言葉が度々出てきます。 混乱をさけるために最初に以下の様に定義します。 Baculaサーバ、Serverspecサーバ BaculaサーバとServerspecがインストールされたサーバをさします。 BaculaとServerspecを1台のサーバにインストールします。 バックアップ対象サーバ、テスト対象サーバ(Baculaクライアントインストール済み) Baculaクライアントインストール済みで、バックアップ対象であり、Serverspecでテストを 実施するサーバをさします。 本書ではバックアップ対象であり、かつテスト対象となるサーバは10台を想定しています。 5
  6. 6. 目次 目的 なぜServerspecなのか? 構築概要 SSH鍵交換 Serverspecインストール Serverspec初期化 Serverspec設定 Serverspec実行 6 ・・・・・・・・ 7 ・・・・・・・・ 10 ・・・・・・・・ 12 ・・・・・・・・ 15 ・・・・・・・・ 24 ・・・・・・・・ 27 ・・・・・・・・ 30 ・・・・・・・・ 38
  7. 7. 目的 7
  8. 8. 目的 前回Ansibleを使って100台のサーバにBaculaクライントを簡単にインストールしようとい う手順を作成しました。 前回の資料は以下です。 http://www.slideshare.net/kensawada14/150105-bacula- clientansiblesetting 果たして本当に正しく設定されているでしょうか? 決してAnsibleの性能を疑っているわけではないですが、サーバの設定をしてテストもせず に、そのまま使うことは個人用途以外では余り無いと思います。 何台ものサーバのテストをするのは手間がかかります。そこでテストを軽減するために、 Serverspecを使って10台のサーバを一気にテストすることを目的とします。 8
  9. 9. 目的 Serverspecを使って以下の4点をテストします。 ・Baculaクライアントはインストールされているか?(bacula-client) ・Baculaクライアントは自動起動するように設定されているか? ・Baculaクライアントデーモンは起動しているか?(bacula-fd) ・Baculaクライアントの使うポート9102は空いているか? 9
  10. 10. なぜServerspec なのか? 10
  11. 11. なぜServerspecなのか? 自動サーバ構成テストツールで有名なもの・・・・・・ ってServerspecしかないですよね? 私が知らないだけかもしれませんが(笑) 情報も多いですし、今回は選択の余地なしでServerspecを使用します。 Serverspecはサーバ側にインストールしてしまえば、テスト対象サーバ側にはインストール 及び設定は不要です。 11
  12. 12. 構築概要 12
  13. 13. 構築概要 13 構成図 Baculaサーバ、Serverspecサーバ IPアドレス 192.168.0.10 IPアドレス 192.168.0.151~160 本手順書は上記の構成を想定した手順書になります。 ServerspecはBaculaサーバにインストールします。 テスト対象サーバ側にServerspec関連のインストールおよび設定は不要です。 バックアップ対象サーバ、テスト対象サーバ (Baculaクライアントインストール済み) Serverspecで各サーバを テスト
  14. 14. 構築概要 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インストール ベースパッケージ追加
  15. 15. SSH鍵交換 15
  16. 16. SSH鍵交換 16 Serverspecを使用する前に、Serverspecがインストールされているサーバとテス ト対象サーバ側でSSHの鍵交換を行い、パスワードなしでログインできる状態にしま す。 ※鍵交換なしでもServerspecを使用できますが、テストを実行するたびに全ての サーバに対してパスワードが必要になるために、ここでは鍵交換を行います。
  17. 17. 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キー」で問題ありません。
  18. 18. SSH鍵交換 18 Serverspecサーバで鍵を作成したら、次に「ssh-copy-id」コマンドを使用してテ スト対象サーバ側に鍵をコピーします。 ここでは「bacula_client_lists」と「ssh-key.sh」というふたつのファイルを用意しテ スト対象サーバ10台に一度に鍵をコピーします。 ファイルの置き場は任意で構いませんが本書では/tmpに配置します。 各ファイルの詳細は次のページに記載します。
  19. 19. 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台のサーバを記述します。
  20. 20. 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
  21. 21. 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が実行できない場合はファイルの権限を確認してください。
  22. 22. 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. # テスト対象サーバ側パスワードの入力をサーバの台数分繰り替えします。
  23. 23. SSH鍵交換 23 SSH鍵登録の確認をします。 任意の数台のテスト対象サーバにパスワードなしでログインできることを確認します。 # ssh root@192.168.0.151 # # ssh root@192.168.0.152 # # ssh root@192.168.0.153 # ここでは3台だけ確認しております。
  24. 24. Serverspec インストール 24
  25. 25. Serverspecインストール 25 # yum -y install ruby # yum -y install rubygems Ruby、rubygems、RSpecをインストール後にServerspecをインストールします。 まず以下のコマンドでrubyをインストールします。 次に以下のコマンドでrubygemsをインストールします。 # gem install rake 次にgemを使ってRSpecをインストールします。 各コマンド実行後の画面は省略しています。
  26. 26. Serverspecインストール 26 # gem install serverspec 最後にServerspecをインストールします。 以下のコマンドでgemを使ってServerspecをインストールします。
  27. 27. Serverspec初期化 27
  28. 28. Serverspec初期化 28 Serverspecを実行するために、まず初期化が必要になります。 以下のコマンドで初期化します。 ここではroot配下に「serverspec」というディレクトリを作成した上で、初期化を実 行します。 ディレクトリの作成場所は任意で問題ありません。 # mkdir -p /root/serverspec # cd /root/serverspec # serverspec-init
  29. 29. 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 #
  30. 30. Serverspec設定 30
  31. 31. Serverspec設定 31 Serverspecの設定を行います。 先ほど「serverspec-init」を実行したディレクトリに「spec」というフォルダがあります。 「spec」フォルダのさらに下にホスト名のフォルダがあり、その下に設定ファイルがありま す。 以下のコマンドでServerspecの設定ファイルのディレクトリに移動します。 # cd /root/serverspec/spec/192.168.0.151 Serverspecの設定ファイルである「sample_spec.rb」があることを確認します。 # ls # sample_spec.rb
  32. 32. 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
  33. 33. 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台分の設定を作成します。
  34. 34. Serverspec設定 34 残り9台分のホストリストを作成します。 「/root/serverspec」ディレクトリにtest.lstというファイルを作成します。 ファイル名は任意のもので構いません。
  35. 35. 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」を流用すると便利です。
  36. 36. Serverspec設定 36 以下のコマンドで9台分の設定ファイルをコピーします。 # cd /root/serverspec # for i in `cat test.lst` > do > cp –r 192.168.0.151 $i > done #
  37. 37. 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 #
  38. 38. Serverspec実行 38
  39. 39. 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」となっていれば問題ありません。

×