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

3.2.3. Identity Service(Keystone)のインストール

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

3.2.3.1. Keystoneのインストール

Keystoneのインストールはパッケージで行う場合は全て依存関係を解消してくれます。
$ sudo apt-get install -y keystone

3.2.3.2. Keystoneのコンフィグ

keystoneのコンフィグを行います。
バックアップをディレクトリごととっておきましょう。
$ sudo cp -a /etc/keystone /etc/keystone_bak
DEFAULT、CATALOG、SQLの3セクションの変更が必要です。
またバージョンEssexからはCatalogはファイルで設定するのが推奨になりましたのでそのままでもデータベース経由で利用可能なのですが、推奨設定のファイルを利用する形態で設定します。
SQLの接続先、ユーザ名、パスワードは適切なものを設定するようにして下さい。

3.2.3.2.1. DEFAULTセクションの変更

[DEFUALT]セクションは、 admin_token とログ部分の変更を行います。

変更前

[DEFAULT]
#bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
admin_token = ADMIN
compute_port = 8774
verbose = True
debug = True
log_config = /etc/keystone/logging.conf

変更後

[DEFAULT]
#bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
admin_token = 999888777666
compute_port = 8774
verbose = True
debug = True
log_file = /var/log/keystone/keystone.log
#log_config = /etc/keystone/logging.conf

3.2.3.2.2. sqlセクションの変更

[sql]セクションは、 keystoneのデータベースに接続するためのデータベースをsqliteからMySQLへ変更しています。
パスワードは password としていますが適切なものを設定して下さい。

変更前

[sql]
connection = sqlite:////var/lib/keystone/keystone.db
idle_timeout = 200

変更後

[sql]
connection = mysql://keystone:password@stack01/keystone
idle_timeout = 200

3.2.3.2.3. catalogセクションの変更

[catalog]セクションは、 エンドポイントの設定がEssexからはファイルベースがデフォルトになりました。
そのためdriverをsqlからファイルベースに変更します。

変更前

[catalog]
driver = keystone.catalog.backends.sql.Catalog

変更後

[catalog]
driver = keystone.catalog.backends.templated.TemplatedCatalog
template_file = /etc/keystone/default_catalog.templates

以上でコンフィグの設定は終わりです。念の為差分を記述しておきます。

$ sudo diff keystone_bak/keystone.conf keystone/keystone.conf
5c5
< admin_token = ADMIN
---
> admin_token = 999888777666
9c9,10
< log_config = /etc/keystone/logging.conf
---
> log_file = /var/log/keystone/keystone.log
> #log_config = /etc/keystone/logging.conf
20c21
< connection = sqlite:////var/lib/keystone/keystone.db
---
> connection = mysql://keystone:password@stack01/keystone
37c38,39
< driver = keystone.catalog.backends.sql.Catalog
---
> driver = keystone.catalog.backends.templated.TemplatedCatalog
> template_file = /etc/keystone/default_catalog.templates

3.2.3.3. データベースの作成

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

3.2.3.4. プロセスの起動

Keystoneを起動します。
$ sudo stop keystone ; sudo start keystone

3.2.3.5. データの作成

KeystoneにOpenStackで利用するサービス、サービスに対するユーザ、ロールの設定を行います。
ここではサンプルのシェルを利用して作成します。
実際には環境にあった設定を利用したシェルの作成などが必要かも知れません。
後でSwiftを利用する際にはコマンドで追加する手順を記述しますので参考にして下さい。
サンプルを利用はしますがサンプルへ最低限の設定を行います。
複数台構築することを想定してローカルホストの設定になっている箇所をControllerNodeのホスト名へ変更しておきま

す。 | サンプルデータはコンフィグと違う場所にあるためオリジナルはそのままにして実行します。 | secreteとなっているパスワードは変更しておきましょう。 | ここではpasswordとしています。 | またこのパスワードはNovaやGlanceでも後で設定するものと同じである必要がありますので注意して下さい。 | サンプルシェルを利用するための環境変数を先に設定しています。 | コンフィグに設定したものに合わせる必要がありますので変更していたら以下の変数も適宜変更して下さい。

$ export OS_USERNAME=admin
$ export OS_PASSWORD=password
$ export OS_TENANT_NAME=admin
$ export OS_AUTH_URL=http://localhost:5000/v2.0/
$ cd /usr/local/src ; sudo cp -a /usr/share/keystone/sample_data.sh .
$ sudo sed -i "s/127.0.0.1/$NOVA_CONTOLLER_HOSTNAME/" /home/stack/sample_data.sh
$ sudo sed -i "s/localhost/$NOVA_CONTOLLER_HOSTNAME/" /home/stack/sample_data.sh
$ sudo sed -i "66s/secrete/$ADMIN_PASSWORD/" /usr/local/src/sample_data.sh
$ sudo /usr/local/src/sample_data.sh

3.2.3.6. 設定確認

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

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

$ keystone role-list
+----------------------------------+----------------------+
|                id                |         name         |
+----------------------------------+----------------------+
| 196a50327d0a4f1f83d403a088bf85eb | KeystoneServiceAdmin |
| 45c61c4b024a47bbaaf6773885ed2b7d | netadmin             |
| 6edf2e35986f4ddfba52fbb355f39405 | admin                |
| 7d0a61a167c54e8397e821b0905970ae | Member               |
| d1ea30b18d534a5c8d93d8400bc8d1e4 | KeystoneAdmin        |
| dbfe94031313440380a41fb10d618ef8 | sysadmin             |
+----------------------------------+----------------------+

$ keystone ec2-credentials-list
+--------+----------------------------------+----------------------------------+
| tenant |              access              |              secret              |
+--------+----------------------------------+----------------------------------+
| admin  | 288633637a1f4819b0a72f2b1f28d73e | 4adc970e9c334608839112f1565e1910 |
+--------+----------------------------------+----------------------------------+
Keystoneのインストール、設定はここで終了です。
SwiftやQauntumのインストールなどのコンポーネントを追加する際はサンプルシェルでなくコマンドで追加します。
サンプルシェルでなく独自でシェルを作成してテナントやユーザを作成する場合はそちらを参考にして作成して下さい。