O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

2.916 visualizações

Publicada em

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

Publicada em: Software
  • Seja o primeiro a comentar

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」となっていれば問題ありません。

×