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.

Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール

2,266 views

Published on

Ansibleを使ってサーバ100台に統合バックアップBaculaクライアントを簡単インストールする手順書です。

Published in: Software

Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール

  1. 1. Ansibleを使ってサーバ100台に Baculaクライントを簡単インストール Version 1.0 2015/01/05 サワダ ケン (@ksawada1979)
  2. 2. はじめに 本書は構成管理ツールであるAnsibleを使用して、サーバ100台に対して簡単に Baculaクライアントをインストールする手順について記載します。 Baculaの基本、インストールおよび設定は以下のドキュメントを参照ください。 http://www.slideshare.net/kensawada14/140801oscbacula/ Bacula GUI管理ツールのインストールおよび設定は以下のドキュメントを参照ください。 http://www.slideshare.net/kensawada14/141114baculabaculagui 2
  3. 3. はじめに 本書ではサーバ、クライアントという言葉が度々出てきます。 混乱をさけるために最初に以下の様に定義します。 Baculaサーバ、構成管理サーバ Baculaサーバと構成管理サーバがインストールされたサーバをさします。 BaculaとAnsibleの両方がインストールされた1台のサーバをさします。 バックアップ対象サーバ、構成管理クライアント Baculaクライアントをインストールするバックアップ対象であり、構成管理ツールにより管理 される側のクライアントをさします。 本書ではバックアップ対象であり、構成管理対象となるクライアントは10台を想定していま す。 3
  4. 4. はじめに すいません・・・ タイトルにサーバ100台になんて書いてしまいましたが、実際は仮想でも用意するのが大 変だったので、本書では10台の設定手順を記載します。 4 大変申し訳ありません いい訳ですが、結局は10台も100台も手順は一緒です。 自動化するための手順を記載してますので、本書の手順と同じ手順で100台設定は可 能です。 ただ実際に動作確認できていないので、正直に書かせていただきました。
  5. 5. 目次 目的 なぜAnsibleなのか? 構築概要 SSH鍵交換 Ansibleインストール Ansible設定 Baculaクライアント用設定 Ansible実行 Baculaクライアント確認 5
  6. 6. 目的 6
  7. 7. 目的 統合バックアップBaculaでは、バックアップ対象となるサーバにBaculaクライアントをインス トールしさらに、コンフィグファイルに設定を記述する必要があります。 仮にバックアップ対象が100台あり、それらのサーバにすべてクラアントをインストールおよび 設定するのは非常に手間がかかります。 そこで少しでも手間のかかる作業を軽減するために、本書を作成しました。 本書の手順はBaculaと同様にクライントのインストールが必要なソフトウェア(例えば Zabbi○とか)でも応用が利くと思いますので参考になれば幸いです。 7
  8. 8. なぜAnsibleなのか? 8
  9. 9. なぜAnsibleなのか? 構成管理ツールはAnsible以外にも有名なところでChef、Puppetなどがあります。 なぜ、Ansibleを使用するのかはChefとPuppetはエージェントと呼ばれるソフトウェアを、 管理対象となる各サーバ(クライアント)にインストールする必要があります。 ところがAnsibleではエージェントが不要で、SSHとPythonがあれば利用可能です。 (SSHとPythonはほとんどのサーバに標準でインストールされています) これは非常に大きな強みだと思います。新規で構築するサーバにはソフトウェアの追加は 容易ですが、既存のサーバに追加でソフトウェアをインストールするには色々と問題がある ケースが多いかと思います。 そういった側面から既存サーバも有効活用でき、さらに追加でパッケージのインストールが 不要なAnsibleを選択しています。 9
  10. 10. Bacula構築概要 10 構成図 Baculaサーバ、構成管理サーバ バックアップ取得 IPアドレス 192.168.0.10 IPアドレス 192.168.0.151~160 本手順書は上記の構成を想定した手順書になります。 AnsibleはBaculaサーバにインストールします。 バックアップ対象側にAnsible関連のインストールおよび設定は不要です。 バックアップ対象、構成管理クライアント (Baculaクライアントをインストール) Ansibleで各サーバに Baculaクライアントインストール および設定
  11. 11. Bacula構築概要 11 Virtualbox上に以下の11台のサーバを構築します。 ・Baculaサーバ(1台) OS: CentOS6.5(x86_64) minimalインストール ベースパッケージ追加 DB: MySQL 5.1.73 構成管理ツール: Ansible 1.8.1 Bacula 5.0.0 ・バックアップ対象サーバ(10台) OS:CentOS6.5(x86_64) minimalインストール ベースパッケージ追加
  12. 12. SSH鍵交換 12
  13. 13. SSH鍵交換 13 Ansibleを使用するには、Ansibleがインストールされているサーバと構成管理を行 うサーバ(クライアント側)でSSHの鍵交換がされて、パスワードなしでログインできる ことが前提となります。
  14. 14. SSH鍵交換 14 # 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. <省略> # まず構成管理サーバでsshの鍵を作成します。 すでに作成済みの場合は本手順は不要です。 以下のコマンドで鍵を作成します。 コマンド入力後は何も入力せずに「Enterキー」で問題ありません。
  15. 15. SSH鍵交換 15 構成管理サーバで鍵を作成したら、次に「ssh-copy-id」コマンドを使用して構成 管理クライアント側に鍵をコピーします。 ここでは「bacula_client_lists」と「ssh-key.sh」というふたつのファイルを用意し 構成管理クライアント10台に一度に鍵をコピーします。 ファイルの置き場は任意で構いませんが本書では/tmpに配置します。 各ファイルの詳細は次のページに記載します。
  16. 16. SSH鍵交換 16 /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 実際に100台のサーバにインストールする場合にはここで100台のサーバを記述しま す。
  17. 17. SSH鍵交換 17 /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
  18. 18. SSH鍵交換 18 「bacula_client_lists」と「ssh-key.sh」を準備したら以下のコマンドで実行しま す。構成管理クライアント側に順次構成管理サーバの鍵を登録します。 # 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が実行できない場合はファイルの権限を確認してください。
  19. 19. SSH鍵交換 19 引き続き構成管理クライアント側のパスワードを入力します。 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. # 構成管理側クライアント側パスワードの入力をサーバの台数分繰り替えします。
  20. 20. SSH鍵交換 20 SSH鍵登録の確認をします。 任意の数台の構成管理側クライアントにパスワードなしでログインできることを確認 します。 # ssh root@192.168.0.151 # # ssh root@192.168.0.152 # # ssh root@192.168.0.153 # ここでは3台だけ確認しております。
  21. 21. Ansibleインストール 21
  22. 22. Ansibleインストール 22 # yum localinstall http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6- 8.noarch.rpm # yum -y install ansible EPELを使用してインストールします。 以下のコマンドでEPELリポジトリを追加します。 次にAnsibleをインストールします。 ※上記コマンドは1行で実行します。
  23. 23. Ansible設定 23
  24. 24. Ansible設定 24 Ansibleの設定ファイル /etc/ansible/hosts /etc/ansible/bacula_client.yml Ansibleで最低限必要な設定ファイルはインストールおよび設定などを実施する対 象のリスト「hosts」ファイルと、実際のインストールや設定を行う処理が記述された YAML形式のplaybookと呼ばれるファイルの2つです。 本書の例では上記2つのファイルを/etc/ansibleに配置していますが、任意の場 所、任意の名前で配置することも可能です。
  25. 25. Ansible設定 25 /etc/ansible/hosts 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
  26. 26. Ansible設定 26 /etc/ansible/bacula_client.yml - hosts: all user: root sudo: yes tasks: - name: bacula-client install yum: name=bacula-client state=installed - name: bacula config setting copy: src=bacula-fd.conf dest=/etc/bacula/bacula-fd.conf - name: bacula-fd service on & start service: name=bacula-fd state=running enabled=yes Baculaクライアントのインストール、Baculaクライアント側の設定ファイルコピー、 Baculaクライアントの起動および自動起動をonの設定をAnsibleの設定ファイルに 記述します。
  27. 27. Baculaクライアント側 設定 27
  28. 28. Baculaクライアント側設定 28 Baculaのクライアント側に必要な設定ファイルを準備します。 まず以下のコマンドでベースとなる設定ファイルをコピーします。 # cp /etc/bacula/bacula-fd.conf /etc/ansible/ # もしbacula-fd.confが無い場合は「yum –y install bacula-client」を実行し てファイルを作成してください。
  29. 29. Baculaクライアント側設定 29 次にコピーした設定ファイルを修正します。 # vi /etc/ansible/bacula-fd.conf <省略> Director { Name = bacula-dir Password = “osc2014" } <省略> Director { Name = bacula-mon Password = "osc2014" Monitor = yes } <省略> パスワード部分のみを変更します。BaculaサーバのDirectorに接続するためのパス ワードです。こちらはBaculaサーバ側の設定に合わせてください。osc2014というの は例になります。
  30. 30. Ansible実行 30
  31. 31. Ansible実行 31 # cd /etc/ansible # ansible-playbook bacula_client.yml PLAY [all] ******************************************************************** GATHERING FACTS *************************************************************** ok: [192.168.0.150] TASK: [bacula-client install] ************************************************* changed: [192.168.0.150] TASK: [bacula config setting] ************************************************* changed: [192.168.0.150] TASK: [bacula-fd service on & start] ****************************************** changed: [192.168.0.150] PLAY RECAP ******************************************************************** 192.168.0.150 : ok=4 changed=3 unreachable=0 failed=0 Ansibleの設定が完了したらAnsibleを実行します。 以下のコマンドで実行します。 上記は1台分の例になります。実際は設定したサーバの台数分結果が出力されま す。エラーが発生していないことを確認します。
  32. 32. Baculaクライアント確認 32
  33. 33. Baculaクライアント確認 33 # ssh root@192.168.0.151 # # chkconfig | grep bacula-fd bacula-fd 0:off 1:off 2:on 3:on 4:on 5:on 6:off # # ps aux | grep bacula-fd root 2253 0.0 0.1 170988 1396 ? Ssl 10:49 0:00 bacula-fd -c /etc/bacula/bacula-fd.conf Baculaクライアントがインストールされたことを確認します。 任意のサーバにログインし確認します。 Baculaクライアントが自動起動がonになっており、bacula-fdが起動していること を確認します。
  34. 34. Baculaクライアント確認 34 コンフィグファイルが変更されていることを確認します。 以下のコマンドはBaculaクライアント側で実行します。 # cat /etc/ansible/bacula-fd.conf <省略> Director { Name = bacula-dir Password = “osc2014" } <省略> Director { Name = bacula-mon Password = "osc2014" Monitor = yes } <省略> Baculaサーバ側で準備した設定ファイルの内容が反映されていることを確認します。

×