「オープンソース」を使ってみよう (第26回 dodai-deploy編)

1 Comment
このエントリーをはてなブックマークに追加

————————————–
日本 Eucalyptus ユーザ会
Team dodai project
羽深 修
————————————–

Table of Contents
=================
1 dodai-deploy の概要
 1.1 dodai-deploy について
 1.2 構成概要
 1.3 制限事項
2 環境について
 2.1 本稿での環境
3 dodai-deploy のインストール
 3.1 dodai-deploy server のインストール
 3.2 dodai-deploy node のインストール
4 Eucalyptus をインストールしてみよう
 4.1 対象にする Eucalyptus について
 4.2 Eucalyptus の構成
 4.3 事前準備
 4.4 Eucalyptus のインストール
5 OpenStack をインストールしてみよう
 5.1 対象にする OpenStack について
 5.2 OpenStack の構成
 5.3 事前準備
 5.4 OpenStack のインストール
6 今後について
 6.1 現状の課題
 6.2 Install as a Service
7 参考情報
 7.1 リポジトリ
 7.2 開発者ブログ

1. dodai-deploy の概要

dodai-deploy は Apache License Version 2.0 で公開されているオープンソースな環
境構築ソフトウェア(デプロイメントツール)です。Crowbar や Juju のようなソフト
ウェアと同類になります(ただし、Crowbar のように物理マシンに OS をインストール
することはできません)。

dodai-deploy は「OpenStack の環境を構築する作業を簡単にできないだろうか?」と
いう要望に対する一つの解として生まれました。そのため、OpenStackのマニュアルの
第15章
で取り上げられ使い方について記述されています。

ただし、日本語での情報がほとんど存在しないため、本稿で紹介致します。

1.1 dodai-deploy でできること
dodai-deploy は複数台のマシンに対してソフトウェアを一元的にインストールしたり
構成を管理できます。もちろん複数台のマシンでなく1台のみに対してもインストール
等ができますが、やはり複数台のマシンを対象とした場合のほうがよりメリットを得ら
れます。

dodai-deploy には主に以下のような機能があります。
* ソフトウェア管理機能
* ソフトウェアの構成および設定
* インストール
* アンインストール
* インストール後のテスト
* ソフトウェアのロギング
* インタフェース
* Web UI
* REST API
* CLI

dodai-deploy は現在以下の OS とソフトウェアをサポートしています。

ubuntu 10.10 ubuntu 11.04 ubuntu 11.10 ubuntu 12.04 CentOS 6.x
 Eucalyptus 3.1
 OpenStack Folsom
 OpenStack Essex
   (Nova, Glance, Swift, Keystone)
 OpenStack Diablo
   (Nova, Glance, Swift)
 hadoop 0.20.2
 sun grid engine 6.2u5

1.2 構成概要
dodai-deploy は管理用の server と各マシンにてエージェントとして動作する node
の2種類で構成されます。server と node は 1:N の関係になります──つまり node
は複数の server に所属することができません。なお、node は server と同居できる
ため、server をインストールしたマシンを node としても利用できます (単一マシン
で dodai-deploy を利用する場合など)。ちなみに同一ネットワークセグメント内に複
数の dodai-deploy 環境を混在させることも可能です。

1.3 制限事項
本稿執筆 (2012/10/31) 時点のバージョンでは以下の制限事項があります。

* dodai-deploy server と node の OS は同一ディストリビューション且つ同一バー
ジョンであること。つまり server が Ubuntu 12.04 である場合は node も Ubuntu
12.04 でなければいけません
* dodai-deploy で扱うソフトウェアと同じソフトウェアが既にインストールされてい
ないこと。つまり既に OpenStack がインストールされている環境に dodai-deploy
で OpenStack をインストールしようとすると正しく動作しません。
* dodai-deploy server と各 node の時刻が5分以上ズレていると動作しません。
(ntp などで時刻同期するのが望ましいです)

2. 環境について

本稿で前提とする環境を以下に示しますが、「この構成でなければ動かない」というわ
けではありませんので、必要に応じて皆さんの環境に読み替えてください。

2.1 本稿での環境
本稿で説明する環境は以下に示すように物理サーバ3台で構成されています。うち1台は
dodai-deploy server と dodai-deploy node が同居しており、他2台は dodai-deploy node
のみで構成しています。なお、OS は Ubuntu 12.04 Server amd64 を前提としています。

なお、各ホスト名の FQDN がそれぞれのマシンで名前解決できるようにしてください。
例えば /etc/hosts に以下のように記述するのも一つの方法ですが、台数が多くなると
設定が大変なため、本来的には DNS サーバなどで名前解決できるようにするべきです。

コード::
172.18.12.10 machine1.dodai-deploy.example.com machine1
172.18.12.11 machine2.dodai-deploy.example.com machine2
172.18.12.12 machine3.dodai-deploy.example.com machine3

3. dodai-deploy のインストール

まず最初に dodai-deploy をインストールします。

3.1 dodai-deploy server のインストール
前述した環境の MACHINE1 に dodai-deploy server をインストールします。

1 ) dodai-deploy をダウンロードします。
コマンド::
## apt のレポジトリ情報を最新にする

$ sudo apt-get update

## gitをインストールしていない場合は最初に git をインストール

  $ sudo apt-get install git -y

## ホームディレクトリに移動

  $ cd ~

## github から dodai-deploy をダウンロード

  $ git clone https://github.com/nii-cloud/dodai-deploy.git

## ダウンロードした dodai-deploy のディレクトリに移動

   $ cd dodai-deploy

2 ) dodai-deploy server をインストールします。
コマンド::
## dodai-deploy を server としてインストール

 $ sudo ./setup-env/setup.sh server

3.2 dodai-deploy node のインストール
前述した環境の MACHINE2, MACHINE3 に dodai-deploy node をインストールします。

1 ) dodai-deploy をダウンロードします。
コマンド::
## apt のレポジトリ情報を最新にする

 $ sudo apt-get update

## git をインストールしていない場合は最初に git をインストール

 $ sudo apt-get install git -y

## ホームディレクトリに移動

 $ cd ~

## github から dodai-deploy をダウンロード

 $ git clone https://github.com/nii-cloud/dodai-deploy.git

## ダウンロードした dodai-deploy のディレクトリに移動

 $ cd dodai-deploy

2 ) dodai-deploy node をインストールします。
コマンド::
## dodai-deploy を node としてインストール
## オプション -s には dodai-deploy server のホスト名(FQDN)を指定しています

  $ sudo ./setup-env/setup.sh -s machine1.dodai-deploy.example.com node

4. Eucalyptus をインストールしてみよう

前述の 3 で作成した dodai-deploy 環境に Eucalyptus をインストールしてみます。

4.1 対象にする Eucalyptus について
インストールする Eucalyptus はバージョン 3.1 です。

4.2 Eucalyptus の構成
Eucalyptus の各コンポーネントは以下の図に示すように、フロントエンド (CLC, CC,
SC, Walrus) を MACHINE1 にインストールし、ノード (NC) を MACHINE2, MACHINE3 に
インストールする想定です。

4.3 事前準備
本稿執筆時点 (2012/10/31) の dodai-deploy では Eucalyptus をインストールする前
に以下の作業を実施する必要があります。
ただし既に何らかの方法でパスワード入力なしに各マシンに SSH 接続できる場合は、
この事前準備を実施する必要はありません。

1 ) SSH の鍵を作成します。
コマンド::
## MACHINE1 にて実行

  $ ssh-keygen

2 ) 各マシンに SSH の公開鍵と秘密鍵をコピーします。
コマンド::
## MACHINE2 と MACHINE3 にて実行

  $ mkdir -p ~/.ssh
  $ chmod 700 ~/.ssh
  $ sudo mkdir -p /root/.ssh
  $ sudo chmod 700 /root/.ssh

## MACHINE1 にて実行

  $ scp ./.ssh/id_rsa 172.18.12.11:~/.ssh/
  $ scp ./.ssh/id_rsa.pub 172.18.12.11:~/.ssh/
  $ scp ./.ssh/id_rsa 172.18.12.12:~/.ssh/
  $ scp ./.ssh/id_rsa.pub 172.18.12.12:~/.ssh/

3 ) 各マシンにて以下を実行して、root ユーザの環境に SSH の公開鍵と秘密鍵をコピーします。
コマンド::

  $ sudo cp -a ./.ssh/id_rsa /root/.ssh/
  $ sudo cp -a ./.ssh/id_rsa.pub /root/.ssh/
  $ sudo chown root. /root/.ssh/id_rsa
  $ sudo chown root. /root/.ssh/id_rsa.pub
  $ sudo cat /root/.ssh/id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys

4 ) MACHINE1 にて dodai-deploy server を起動します。
コマンド::
## MACHINE1 にて実行

  $ cd ~
  $ sudo ./dodai-deploy/script/start-servers production

4.4 Eucalyptus のインストール
以下、dodai-deploy の Web UI で操作する方法を説明します。

1 ) ブラウザで dodai-deploy の Web UI にアクセスします。
URL は http://MACHINE1:3000 です。本稿では http://172.18.12.10:3000 になります。
この URL にアクセスすると以下のようなページが表示されます。

2 ) Web UI のメニューで「Nodes」をクリックし、Node 一覧を表示します。

3 ) 「New Node」をクリックしてノードの登録画面を表示します。

4 ) リスト「Name」から登録するノードを選択して [Create Node] をクリックします。
これを繰り返して、全ノードを登録します。

5 ) Web UI のメニューで [Proposals] をクリックし、Proposal 一覧を表示します。

6 ) Proposal の一覧で [New Proposal] をクリックし、Proposal の設定画面を表示します。

Proposal の設定にて本稿では以下の内容を設定します。(主に変更した箇所のみ記載)

   Name:                    cloud001
   Software:                Eucalyptus3.1
   ・Config items
     cc_vnet_privinterface: eth1
     cc_vnet_pubinterface:  eth0
     cc_vnet_publicips:     172.18.12.20-172.18.12.200
     cc_vnet_subnet:        10.168.0.0
     cc_vnet_netmask:       255.255.0.0
     cc_vnet_addrspernet:   128
     cc_vnet_dns:           利用可能な DNS サーバ
     nc_vnet_pubinterface:  eth1
     nc_vnet_bridge:        br1
     nc_eth1_ips:           192.168.12.11 192.168.12.12
   ・Node configs
     cloud_controller:      machine1.dodai-deploy.example.com
     cluster_controller:    machine1.dodai-deploy.example.com
     node_controller:       machine2.dodai-deploy.example.com
                            machine3.dodai-deploy.example.com

(machine2 を選択して [add] をクリックし、その下で machine3 を選択)

上記を設定したら、ページ下部にある [Create Proposal] をクリックします。

7 ) Proposal 一覧に表示されている対象の [Install] リンクをクリックしてインストールを開始します。

8 ) インストールが成功したのち、[Test] リンクをクリックして、インストールした環境が正しく動作するかを確認します。

以上で Eucalyptus 3.1 のインストールは終了です。

5. OpenStack をインストールしてみよう

前述の 3 で作成した dodai-deploy 環境に OpenStack をインストールしてみます。

5.1 対象にする OpenStack について
本稿でインストールする OpenStack のバージョンは Folsom です。

5.2 OpenStack の構成
OpenStack の各コンポーネントは以下の図に示すように、nova-compute を MACHINE2,
MACHINE3 をインストールし、それ以外のコンポーネントを MACHINE1 にインストールする想定です。

5.3 事前準備

1 ) 以下を実行して Cinder 用の LVM の VG を MACHINE1 に作成します
コマンド::
## MACHINE1 にて実行
## スクリプトの引数はそれぞれ以下の意味です
## 第一引数: physical | loopback (physical => 物理デバイス、loopback => ファイル)
## 第二引数: VG 名
## 第三引数: 物理デバイス名 | ファイル名
## 第四引数: 第一引数が loopback の場合にこの引数でサイズを GB 単位で指定

  $ cd ~
  $ sudo ./dodai-deploy/setup-env/create-volume-group.sh loopback nova-volumes /mnt/volume-store.img 100

2 ) MACHINE1 にて dodai-deploy server を起動します
コマンド::
## MACHINE1 にて実行

  $ cd ~
  $ sudo ./dodai-deploy/script/start-servers production

5.4 OpenStack のインストール

1 ) ブラウザで dodai-deploy の Web UI にアクセスします。
URL は http://MACHINE1:3000 です。本稿では http://172.18.12.10:3000 になります。
この URL にアクセスすると以下のようなページが表示されます。

2 ) Web UI のメニューで「Nodes」をクリックし、Node 一覧を表示します。

3 ) 「New Node」をクリックしてノードの登録画面を表示します。

4 ) リスト「Name」から登録するノードを選択して [Create Node] をクリックします。
これを繰り返して、全ノードを登録します。

5 ) Web UI のメニューで「Proposals」をクリックし、Proposal 一覧を表示します。

6 ) Proposal の一覧で [New Proposal] をクリックし、Proposal の設定画面を表示します。

まず最初に Keystone の Proposal 設定を以下の内容で作成します。

   Name:               folsom-keystone (任意の名前でOK)
   Software:           openstack folsom keystone
   ・Config items
     admin_email:      任意のメールアドレス
     nova_api:         172.18.12.11
     glance:           172.18.12.11
     quantum:          172.18.12.11
     cinder:           172.18.12.11
   ・Node configs
     keystone:         machine1.dodai-deploy.example.com

上記を設定したら、ページ下部にある [Create Proposal] をクリックします。

7 ) 次に Glance の Proposal 設定を以下の内容で作成します。

   Name:               folsom-glance (任意の名前でOK)
   Software:           openstack folsom glance
   ・Config items
     keystone:         172.18.12.11
     swift_proxy:      172.18.12.11
   ・Node configs
     glance: machine1.dodai-deploy.example.com

上記を設定したら、ページ下部にある [Create Proposal] をクリックします。

8 ) 次に Compute の Proposal 設定を以下の内容で作成します。

   Name:               folsom-compute
   Software:           openstack folsom compute
   ・Config items
     network_ip_range: 10.0.0.0/24
     glance:           172.18.12.11
     keystone:         172.18.12.11
   ・Node configs
     nova_api:         machine1.dodai-deploy.example.com
     nova_compute:     machine2.dodai-deploy.example.com
                       machine3.dodai-deploy.example.com
     nova_network:     machine1.dodai-deploy.example.com
     nova_scheduler:   machine1.dodai-deploy.example.com
     nova_objectstore: machine1.dodai-deploy.example.com
     nova_cert:        machine1.dodai-deploy.example.com
     rabbitmq:         machine1.dodai-deploy.example.com
     mysql:            machine1.dodai-deploy.example.com
     dashboard:        machine1.dodai-deploy.example.com
     quantum_server:   machine1.dodai-deploy.example.com
     cinder_api:       machine1.dodai-deploy.example.com
     cinder_scheduler: machine1.dodai-deploy.example.com
     cinder_volume:    machine1.dodai-deploy.example.com

上記を設定したら、ページ下部にある [Create Proposal] をクリックします。

9 ) Proposal 一覧に表示されている keystone の [Install] リンクをクリックしてイ
ンストールを開始します。続いて glance, compute とインストールを行ないます。

10 ) インストールが成功したのち、[Test] リンクをクリックして、
インストールした環境が正しく動作するかを確認します。

以上で OpenStack Folsom のインストールは終了です。

6. 今後について

dodai-deploy はオープンソースであるとは言え、まだ開発者の人数は少ないです。
そのために、以下のように対応できていない課題や実装中の機能などがあります。

6.1 現状の課題
現状の dodai-deploy には以下の課題と予定があります。

・server と node が同一ディストリビューション且つ同一バージョンでなければならない
・今後、server と node は別のディストリビューションでも動くようにする予定です。
・サポートするソフトウェアの種類を増やす
・現状ではまだまだ対応できているソフトウェアが少なく、特定用途向けにしか利用
 できていないため、利用者からのレスポンスが得られにくいので、サポートするソ
 フトウェアの数を増やしていく予定です。
・設定項目に「簡易モード」と「詳細モード」のようなレベルを設ける
・ソフトウェア定義ファイルのテンプレートをダウンロード/アップロードできるよう
 にする(「ソフトウェア定義ファイル」とはソフトウェアのデプロイに関する定義を
 マニフェスト的に記述しているファイルです)。
・上記の「種類を増やす」ためにも必要なことなのですが、現状はユーザが
 dodai-deploy server に SSH や SCP などでアクセスしてマニフェストを書き換え
 たりアップロードする必要がありますが、今後はブラウザからでもテンプレートが
 ダウンロードできたりアップロードできるようにする予定です。
・ソフトウェア定義ファイルの記述方式の再検討
・現状のソフトウェア定義ファイルは記述が容易とは言えず、dodai-deploy および
 puppet に関する知識を習得している必要があるため、将来的にはもっと簡単に記
 述できるように見直す予定です。

6.2 Install as a Service
dodai-deploy の機能をサービスとして提供するための Install as a Service を準備
中です。このサービスがあれば dodai-deploy server を用意することなく、インター
ネットにある Install as a Service のサイトに接続し、インストール対象となるマシ
ン (物理/仮想問わず) を登録し、インストールしたいソフトウェアを選択および設定
することにより、簡単に環境を構築できるようになります。

7. 参考情報

dodai-deploy に関する情報を以下に示します。

7.1 リポジトリ
本稿執筆時点 (2012/10/31) のリポジトリは以下になります。
https://github.com/nii-cloud/dodai-deploy

7.2 開発者ブログ
メイン開発者のブログでも dodai-deploy に関する情報が掲載されることがあります。
http://www.guanxiaohua2k6.com/

One Comment (+add yours?)