34
Ansible を使ってサーバ 100 台に Bacula クライントを 簡単 インストール Version 1.0 2015/01/05 サワダ ケン (@ksawada1979)

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

Embed Size (px)

Citation preview

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

Version 1.02015/01/05

サワダ ケン (@ksawada1979)

はじめに

本書は構成管理ツールである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台設定は可能です。

ただ実際に動作確認できていないので、正直に書かせていただきました。

目次

目的

なぜAnsibleなのか?

構築概要

SSH鍵交換

Ansibleインストール

Ansible設定

Baculaクライアント用設定

Ansible実行

Baculaクライアント確認

5

目的

6

目的

統合バックアップBaculaでは、バックアップ対象となるサーバにBaculaクライアントをインストールしさらに、コンフィグファイルに設定を記述する必要があります。

仮にバックアップ対象が100台あり、それらのサーバにすべてクラアントをインストールおよび設定するのは非常に手間がかかります。

そこで少しでも手間のかかる作業を軽減するために、本書を作成しました。

本書の手順はBaculaと同様にクライントのインストールが必要なソフトウェア(例えばZabbi○とか)でも応用が利くと思いますので参考になれば幸いです。

7

なぜAnsibleなのか?

8

なぜ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鍵交換

12

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インストール

21

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設定

23

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クライアント側

設定

27

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実行

30

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クライアント確認

32

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が起動していることを確認します。

Baculaクライアント確認

34

コンフィグファイルが変更されていることを確認します。

以下のコマンドはBaculaクライアント側で実行します。

# cat /etc/ansible/bacula-fd.conf<省略>Director {Name = bacula-dirPassword = “osc2014"

}

<省略> Director {Name = bacula-monPassword = "osc2014"Monitor = yes

}<省略>

Baculaサーバ側で準備した設定ファイルの内容が反映されていることを確認します。