Keystoneのインストールと設定(コントローラーノード)

各サービス間の連携時に使用する認証サービスKeystoneのインストールと設定を行います。

データベースを作成

MariaDBにKeystoneで使用するデータベースを作成しアクセス権を付与します。

# mysql   ← MariaDBにログイン
MariaDB [(none)]> CREATE DATABASE keystone;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'password';

MariaDB [(none)]> quit

データベースの確認

MariaDBにkeystoneユーザーでログインしデータベースの閲覧が可能であることを確認します。

controller# mysql -u keystone -p
Enter password:  ← MariaDBのkeystoneパスワードpasswordを入力
...
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| keystone           |
+--------------------+

パッケージのインストール

aptコマンドでkeystoneおよび必要なパッケージをインストールします。

controller# apt install keystone apache2 libapache2-mod-wsgi

Keystoneの設定変更

keystoneの設定ファイルを変更します。

controller# vi /etc/keystone/keystone.conf
...
[database]
#connection = sqlite:////var/lib/keystone/keystone.db   ← 既存設定をコメントアウト
connection = mysql+pymysql://keystone:password@controller/keystone   ← 追記
...
[token]
...
provider = fernet       ← 追記

次のコマンドで正しく設定を行ったか確認します。

controller# less /etc/keystone/keystone.conf | egrep -v "^\s*$|^\s*#"

データベースに展開

controller# su -s /bin/sh -c "keystone-manage db_sync" keystone

Fernetキーの初期化

keystone-manageコマンドを実行してFernetキーを初期化します。

controller# keystone-manage fernet_setup --keystone-user keystone \
 --keystone-group keystone
controller# keystone-manage credential_setup --keystone-user keystone \
 --keystone-group keystone

Identityサービスのデプロイ

次のコマンドを実行してIdentityサービスをデプロイします。--bootstrap-passwordで、Keystoneのadminユーザーに設定するパスワードを指定します。

controller# keystone-manage bootstrap --bootstrap-password password \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:35357/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

Apache Webサーバーの設定

  • apache2.confに項目ServerNameを追加して、controllerノードのホスト名を設定します。
controller# vi /etc/apache2/apache2.conf
...
# Global configuration
#
ServerName controller
...

サービスの再起動と不要DBの削除

  • Apache Webサーバーを再起動します。
controller# service apache2 restart
  • パッケージのインストール時に作成される不要なSQLiteファイルを削除します。
controller# rm /var/lib/keystone/keystone.db

サービスとAPIエンドポイントの作成

以下のコマンドでサービスとAPIエンドポイントを設定します。

  • 環境変数の設定
# vi tmp-openrc.sh
  • スクリプトを作成
#!/bin/bash

export OS_USERNAME=admin
export OS_PASSWORD=password
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3

前の手順でKeystoneのadminユーザーに設定したパスワードをOS_PASSWORDに指定します。

  • スクリプトをシステムに適用
# source tmp-openrc.sh
  • サービスの作成
controller# openstack project create --domain default \
  --description "Service Project" service

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
+-------------+----------------------------------+

プロジェクトとユーザー、ロールの作成

  • demoプロジェクトの作成
controller# openstack project create --domain default \
  --description "Demo Project" demo

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 231ad6e7ebba47d6a1e57e1cc07ae446 |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | default                          |
+-------------+----------------------------------+
  • demoユーザーの作成
controller# openstack user create --domain default \
  --password-prompt demo

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aeda23aa78f44e859900e22c24817832 |
| name                | demo                             |
| password_expires_at | None                             |
+---------------------+----------------------------------+
  • userロールの作成
controller# openstack role create user

+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 997ce8d05fc143ac97d83fdfb5998552 |
| name      | user                             |
+-----------+----------------------------------+
  • userロールをdemoプロジェクトとdemoユーザーに追加
controller# openstack role add --project demo --user demo user

このコマンドを実行しても特に何も出力されません。

Keystoneの動作確認

他のサービスをインストールする前にKeystoneが正しく構築、設定されたか動作を検証します。

  • 一時的に設定した環境変数を解除します。
controller# unset OS_AUTH_URL OS_PASSWORD
  • セキュリティーを確保するため、一時認証トークンメカニズムを無効化します。
    • keystone-paste.iniを開き、[pipeline:public_api]と[pipeline:admin_api]と[pipeline:api_v3]セクション(訳者注:..のpipeline行) にadmin_token_authがあれば、削除します。
controller# grep admin_token_auth /etc/keystone/keystone-paste.ini
(設定ファイルを確認)

controller# vi /etc/keystone/keystone-paste.ini
(設定ファイルにadmin_token_authがあれば取り除く)

動作確認のため、adminおよびdemoテナントに対し認証トークンを要求します。 admin、demoユーザーのパスワードを入力します。

  • adminユーザーとdemoユーザーとして認証トークンを要求します。
controller# openstack --os-auth-url http://controller:35357/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name admin --os-username admin token issue
Password:    ← adminユーザーにパスワードを入力

controller# openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name demo --os-username demo token issue
Password:    ← demoユーザーにパスワードを入力

OpenStackクライアントのRCスクリプトの作成

コマンドラインでKeystone認証を通すために、次のようなRCスクリプトを作成します。 adminユーザー用のadmin-openrcと、demoユーザー用のdemo-openrcを作成します。

controller# cat admin-openrc

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=password
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

controller# cat demo-openrc

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=password
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

sourceコマンドで各RCスクリプトを読み込んだ後、結果が出力されることを確認します。

# openstack token issue

results matching ""

    No results matching ""