続いて、Ansibleの設定を行っていきます。「DRBD 9-Ubuntu16.03-Ansible」というディレクトリを作成し、その中にAnsibleの実行に必要な「Playbook」などを配置します。
まず、正しくAnsibleが実行できる環境になっていることを確認しましょう。
Ansibleの対象ホストを記述する「ansible_hosts」というファイルを作成し、対象とする3台のIPアドレスを記述します。今回はそのままIPアドレスを記述しましたが、大規模な構成においては、グループ分けも可能です。
$ sudo vi ansible_hosts 192.168.0.101 192.168.0.102 192.168.0.103
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のディレクトリ構成は以下の通りです(図2)。
「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は前述した通り、メインのPlaybookファイルです。Ansibleを実行する際にはこのファイルを読み込んで、実行します。
--- - hosts: all user: ksawada sudo: yes roles: - ntp - DRBD 9
今回作成したdrbd9.ymlでは、全てのホストに対してユーザー名:ksawadaにsudoの許可を与えています。また、2つのrolesを呼び出して実行するように記述してあります。
このように、メインのPlaybookは非常にシンプルな内容です。Playbookを処理ごとに分割して、コンポーネントとしてまとめておけるrolesを使いこなすのがポイントです。コンポーネントとしてまとめておくと、構築を自動化する他のPlaybookを作る場合にも流用できます。
先ほど、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をインストールするために必要な手順を記述します。
それぞれ「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」ファイルは、以下の内容で「/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
Copyright © ITmedia, Inc. All Rights Reserved.