連載
» 2017年04月17日 05時00分 公開

DRBDの仕組みを学ぶ(16):DRBD 9環境の構築をAnsibleでサクッと自動化する (2/3)

[澤田健,@IT]

Ansibleの設定

 続いて、Ansibleの設定を行っていきます。「DRBD 9-Ubuntu16.03-Ansible」というディレクトリを作成し、その中にAnsibleの実行に必要な「Playbook」などを配置します。

Ansibleの実行環境を確認

 まず、正しくAnsibleが実行できる環境になっていることを確認しましょう。

 Ansibleの対象ホストを記述する「ansible_hosts」というファイルを作成し、対象とする3台のIPアドレスを記述します。今回はそのままIPアドレスを記述しましたが、大規模な構成においては、グループ分けも可能です。

$ sudo vi ansible_hosts
 
192.168.0.101
192.168.0.102
192.168.0.103
「ansible_hosts」へ対象ホストを記述する

 pingモジュールを使ってAnsibleの疎通確認をします。pingに対して「pong」が帰ってくればOKです。

$ ansible -i ansible_hosts all -m ping
 
192.168.0.101 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 
} 
192.168.0.102 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 
} 
192.168.0.103 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 
}
Ansibleの疎通確認を行う

ディレクトリ構成

 今回構築するAnsibleのディレクトリ構成は以下の通りです(図2)。

photo 図2 今回構築するAnsibleのディレクトリ構成

 「DRBD9-Ubuntu16.04-Ansible」ディレクトリ以下に構成ファイルを配置します。

 「drbd9.yml」がメインのPlaybookとなります。Playbookの中で、DRBD 9とインターネット経由での時刻取得に使うNTP(Network Time Protocol)用の「roles」を呼び出して実行するように記述します。詳細は後述します。

 rolesは、一定の役割を持たせて、それらの機能をコンポーネントとしてまとめておく設定ファイルです。今回は、DRBD 9をインストールするためのコードを記述したDRBD 9用のrolesと、NTPの最新版をインストールするコードを記述したNTP用のrolesを作成します。

 それぞれのrolesディレクトリの中には「task」と「templetes」があります。taskはインストールなどの実際の処理を記述するファイルを格納するディレクトリで、templetesには差し替え用のファイルなどを配置するディレクトリとなります。tasks、templetesの他にも「vars」「defaults」なども使えますが、ここでは説明を割愛します。

 続いて、個々の設定ファイルを解説します。

drbd9.yml

 drbd9.ymlは前述した通り、メインのPlaybookファイルです。Ansibleを実行する際にはこのファイルを読み込んで、実行します。

---
- hosts: all
 
  user: ksawada
  sudo: yes
 
  roles:
     - ntp
     - DRBD 9
「drbd9.yml」の中身

 今回作成したdrbd9.ymlでは、全てのホストに対してユーザー名:ksawadaにsudoの許可を与えています。また、2つのrolesを呼び出して実行するように記述してあります。

 このように、メインのPlaybookは非常にシンプルな内容です。Playbookを処理ごとに分割して、コンポーネントとしてまとめておけるrolesを使いこなすのがポイントです。コンポーネントとしてまとめておくと、構築を自動化する他のPlaybookを作る場合にも流用できます。

main.yml(DRBD 9用)

 先ほど、rolesはDRBD 9用とNTP用の2つを作成すると説明しました。まず、DRBD 9用のrolesとして、「/roles/debd9/tasks/」ディレクトリにある「main.yml」を確認します。

---
    - name: hosts Change
      template: src="roles/DRBD 9/templete/hosts"
                dest="/etc/hosts"
 
    - name: Lvm Create
      lvg: vg=drbdpool pvs=/dev/sdb1
 
    - name: DRBD 9 Repository Add
      apt_repository: repo='ppa:linbit/linbit-DRBD 9-stack'
 
    - name: DRBD 9 & DRBD Manage Install
      apt: name={{item}} state=present update_cache=yes
      with_items:
          - drbd-utils
          - python-drbdmanage
          - drbd-dkms
DRBD 9用「main.yml」の中身

 DRBD 9用のmain.ymlには、DRBD 9をインストールするために必要な手順を記述します。

 それぞれ「name」の行には、実行する処理の任意の項目名を記述します。どんな内容でも構いませんが、誰もが分かる明解なものにするのが望ましいでしょう。

 「name: hosts Change」では、templatesディレクトリににあらかじめ用意した「hosts」ファイルを「/etc/hosts」に上書きする処理を記述しています。

 「name: Lvm Create」では、/dev/sdb1を初期化して「drbdpool」というボリュームグループを作成する処理を記述しています。このボリュームはDRBD 9専用の領域として使われるものです。

 「name: DRBD 9 Repository Add」では、DRBD 9とDRBD Manageをインストールするためのリポジトリを追加する処理を記述しています。同時にパッケージリストも最新に更新しています。

 「name: DRBD 9 & DRBD Manage Install」では、DRBD 9とDRBD Manageをインストールする処理を記述しています。

hosts(DRBD 9用)

 前述した変更用の「hosts」ファイルは、以下の内容で「/roles/debd9/template/」ディレクトリにあらかじめ用意しておきます。IPアドレスなどはお使いの環境に応じて適宜変更してください。

127.0.0.1	localhost
 
192.168.0.101	DRBD 9-1
192.168.0.102	DRBD 9-2
192.168.0.103	DRBD 9-3
「/roles/debd9/template/hosts」の中身の例

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。