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