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

Identity Service(Quantum)のインストール

OpenStack Identity Serviceのコード名はQuantumです。
Quantumはユーザ、テナント(プロジェクト)などOpenStackのコンポーネント全ての共通認証・認可を一括管理するコンポーネントです。
Quantumをインストールすることによって各々のコンポーネントで認証・認可を行う必要がなくなります。

Quantumのダウンロード

Quantumのソースをダウンロードします。
またQuantumAPIを利用するためのクライアントもダウンロードしておきます。
ダウンロードしたバージョンはMasterになっているためバージョンはどちらもFolsomにします。

Quantumに依存するパッケージのインストール

$ kernel_version=`cat /proc/version | cut -d " " -f3`
$ apt-get install -y make fakeroot dkms openvswitch-switch openvswitch-datapath-dkms linux-headers-$kernel_version

Quantumのソースをダウンロード

$ sudo git clone git://github.com/openstack/quantum /opt/quantum
$ sudo git clone git://github.com/openstack/python-quantumclient /opt/python-quantumclient

QuantumのバージョンをFolsomに固定

ここではまだFolsomがリリースされていませんので、本体を folsom-rc1 クライアントを master としています。
クライアントのタグは folsom-1 までしか切られていませんがMasterで問題ないのでMasterを利用します。
$ cd /opt/quantum ; sudo git checkout -b folsom refs/tags/folsom-rc1

Quantumのインストール

ダウンロードしたQuantumとクライアントをインストールします。
pipでパッケージの依存関係を解決します。
$ sudo pip install -r /opt/quantum/tools/pip-requires
$ cd /opt/quantum && sudo python setup.py install
$ cd /opt/python-quantumclient && sudo python setup.py install

Quantumが利用するユーザ、ディレクトリなどの作成

ソースからインストールする場合はユーザやディレクトリを作成する必要がありますので作成します。
$ sudo useradd quantum -m -d /var/lib/quantum -s /bin/false
$ sudo mkdir /etc/quantum
$ sudo mkdir /var/log/quantum
$ sudo chown quantum:quantum /var/log/quantum

Quantumのコンフィグ

quantumのコンフィグを行います。
バックアップをディレクトリごととっておきましょう。
$ sudo cp -a /opt/quantum/etc/* /etc/quantum
sql_connection = mysql://quantum:password@stack01/quantum
DEFAULT、CATALOG、SQL、TOKEN、EC2の5セクションの変更が必要です。
またバージョンFolsomからはCatalogはファイルで設定するのが推奨になりましたのでそのままでもデータベース経由で利用可能なのですが、推奨設定のファイルを利用する形態で設定します。
SQLの接続先、ユーザ名、パスワードは適切なものを設定するようにして下さい。
何故かGitのものは全てがコメントになっているのでコンフィグを以下に示します。

データベースの作成

Quantumが利用するデータベースを作成します。
Quantumのデータベースを設定するためのユーザ、パスワードはMySQLをインストールした時のものですので注意して下さい。
データベース名quantum、ユーザ名quantum、パスワードはpasswordとしているため適切なものへ変更してください。
ホスト名も同様にstack01としていますので変更が必要であればおこなって下さい。
$ mysql -u root -pnova -e "create database quantum;"
$ mysql -u root -pnova -e "grant all privileges on quantum.* to 'quantum'@'%' identified by 'password';"
$ mysql -u root -pnova -e "grant all privileges on quantum.* to 'quantum'@'localhost' identified by 'password';"
$ mysql -u root -pnova -e "grant all privileges on quantum.* to 'quantum'@'stack01' identified by 'password';"
$ sudo quantum-manage db_sync

プロセスの起動

Quantumを起動します。がソースからのインストールの場合は起動スクリプトがありませんので用意します。

起動スクリプトの用意

$ cat << 'KEYSTONE_INIT' | sudo tee /etc/init/quantum.conf > /dev/null
description "Quantum API server"
author "Soren Hansen <soren@linux2go.dk>"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [016]

respawn

exec su -s /bin/sh -c "exec quantum-all" quantum
KEYSTONE_INIT

プロセスの起動

作成した起動スクリプトを利用してQuantumを起動します。

$ sudo stop quantum ; sudo start quantum

データの作成

QuantumにOpenStackで利用するサービス、サービスに対するユーザ、ロールの設定を行います。
ここではサンプルのシェルを利用して作成します。
実際には環境にあった設定を利用したシェルの作成などが必要かも知れません。
後でSwiftを利用する際にはコマンドで追加する手順を記述しますので参考にして下さい。
サンプルを利用はしますがサンプルへ最低限の設定を行います。
複数台構築することを想定してローカルホストの設定になっている箇所をControllerNodeのホスト名へ変更しておきます。
サンプルデータはコンフィグと違う場所にあるためオリジナルはそのままにして実行します。
secreteとなっているパスワードは変更しておきましょう。
ここではpasswordとしています。
またこのパスワードはNovaやGlanceでも後で設定するものと同じである必要がありますので注意して下さい。
サンプルシェルを利用するための環境変数を先に設定しています。
コンフィグに設定したものに合わせる必要がありますので変更していたら以下の変数も適宜変更して下さい。
$ export SERVICE_TOKEN=ADMIN
$ export SERVICE_ENDPOINT=http://localhost:35357/v2.0
$ cd /usr/local/src ; sudo cp -a /opt/quantum/tools/sample_data.sh .
$ NOVA_CONTOLLER_HOSTNAME=stack01
$ ADMIN_PASSWORD=password
$ export ENABLE_QUANTUM=yes
$ sudo sed -i "s/127.0.0.1/$NOVA_CONTOLLER_HOSTNAME/" /usr/local/src/sample_data.sh
$ sudo sed -i "s/localhost/$NOVA_CONTOLLER_HOSTNAME/" /usr/local/src/sample_data.sh
$ sudo sed -i "66s/secrete/$ADMIN_PASSWORD/" /usr/local/src/sample_data.sh
$ sudo /usr/local/src/sample_data.sh

設定確認

実際にデータが作成されていることを確認しましょう。
ユーザがquantumを操作するにはオプションを付与する必要があります。
操作するテナント名、テナントに対するユーザ名、パスワード、エンドポイントを設定する必要があります。
エンドポイントとは、APIを利用するための接続先であるURLのことです。
OpenStackの各コンポーネントはそれぞれエンドポイントを持つことになります。
ここではQuantumのためのエンドポイントを環境変数に設定します。
エンドポイントにはパブリックURL、インターナルURL、管理用URLの3種類があります。
エンドポイントの種類 概要
パブリックURL エンドユーザがアクセスするためのURL
インターナルURL LAN経由でアクセス可能なユーザのためのURL
管理用URL 管理者用がアクセスするためのURL
作成されたものをlistコマンドでそれぞれ確認してみます。
確認するには環境変数の設定が必要ですのでログインしなおしたりしている場合は再度設定しておいて下さい。
エンドポイント、サービスにもlistコマンドが用意されていますが実行すると501エラーが帰ってきます。
これは、データベースでなくファイルを利用する設定を行ったためですので問題ありません。
テナント、テナントに対するユーザとロール、AmazonAPIを利用するユーザ一覧を確認してみましょう。
$ quantum tenant-list
+----------------------------------+--------------------+---------+
|                id                |        name        | enabled |
+----------------------------------+--------------------+---------+
| 5b4943aa535b42208bb76d3c293061db | admin              | True    |
| 93d40d501e754636be102cafb37ae5f7 | invisible_to_admin | True    |
| c7890b534d2a4f4185d8932f13fda742 | service            | True    |
| d7bad2ca93f34a4199149c678cca6556 | demo               | True    |
+----------------------------------+--------------------+---------+

$ quantum user-list
+----------------------------------+---------+-------------------+-------+
|                id                | enabled |       email       |  name |
+----------------------------------+---------+-------------------+-------+
| 15711bb23219482a8e73545159a013f3 | True    | admin@example.com | demo  |
| 8c570c4d78c0490d919123b2d101d607 | True    | admin@example.com | admin |
+----------------------------------+---------+-------------------+-------+

$ quantum role-list
+----------------------------------+----------------------+
|                id                |         name         |
+----------------------------------+----------------------+
| 196a50327d0a4f1f83d403a088bf85eb | QuantumServiceAdmin |
| 45c61c4b024a47bbaaf6773885ed2b7d | netadmin             |
| 6edf2e35986f4ddfba52fbb355f39405 | admin                |
| 7d0a61a167c54e8397e821b0905970ae | Member               |
| d1ea30b18d534a5c8d93d8400bc8d1e4 | QuantumAdmin        |
| dbfe94031313440380a41fb10d618ef8 | sysadmin             |
+----------------------------------+----------------------+
Quantumのインストール、設定はここで終了です。
SwiftやQauntumのインストールなどのコンポーネントを追加する際はサンプルシェルでなくコマンドで追加します。
サンプルシェルでなく独自でシェルを作成してテナントやユーザを作成する場合はそちらを参考にして作成して下さい。