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

8.3.1. keystoneコマンド

 Openstackのコマンドは数多く有ります。
このページは keystone のコマンドについて記述します。
データベースの登録だけは keystone-manage を利用します。
keystone はコマンド自体は難しくないのですが登録する概念と内容が難しいかもしれません。

8.3.1.1. 環境変数について

  keystone コマンドを利用するためには環境変数のファイルを作成して読み込ませるなどしたほうがコマンド実行時にいちいち指定する必要がなくなり便利になります。
読み込ませるのは nova と同じ環境変数です。
変数名 設定例 備考
OS_USERNAME admin
プロジェクトのユーザを設定します。
Keystone に設定したものになります。
OS_PASSWORD password
ユーザのパスワードを設定します。
Keystone に設定したものになります。
OS_TENANT_NAME admin
nova コマンドを実行するテナント名を設定します。
プロジェクト名のことになります。
こちらも Keystone に設定したものになります。
OS_AUTH_URL http://stack01:5000/v2.0/ /etc/keystone/keystone.conf に設定したものを設定します。

例えば以下のようなファイルを作成して keystone コマンド実行前に実行しておきます。

$ cat << 'NOVARC' | sudo tee -a /home/stack/novarc > /dev/null
export OS_USERNAME=admin
export OS_PASSWORD=password
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://stack01:5000/v2.0/
NOVARC
$ chmod 600 /home/stack/novarc
$ . /home/stack/novarc
$ keystone service-list

8.3.1.2. 環境変数について

keystone コマンドを利用するためには環境変数のファイルを作成して読み込ませるなどしたほうがコマンド実行時にいちいち指定する必要がなくなり便利になります。

変数名 設定例 備考
OS_USERNAME admin
ユーザを設定します。
Keystone で設定されているものです。
OS_PASSWORD password
パスワードを設定します。
Keystone で設定されているものです。
OS_TENANT_NAME admin テナント名を設定します。
OS_TENANT_ID   テナントIDを設定します。
AUTH_URL http://stack01:5000/v2.0/
認証するURLを設定します。
Keystone のURLです。
OS_REGION_NAME RegionOne リージョン名を設定します。
OS_IDENTITY_API_VERSION 2.0 IDENTITYのバージョンを指定します。
SERVICE_TOKEN 999888777666
TOKENを指定します。
keystone.conf に記述してあるので設定の必要はないはずです。
SERVICE_ENDPOINT   利用時は、データベースに登録してあるものを利用するはずのため設定の必要は無いはずです。

8.3.1.3. コマンド

keystone はコマンドコマンドはイメージの管理を行うだけのコマンドのため novanova-manage と違いシンプルなコマンドです。
member に関するコマンドもありますが keystone と連携することが主なのであまり使用しないでしょう。
コマンド 概要 備考
keystone catalog [–service <service-type>] Keystoneに設定されているサービス情報を表示する volume , image など認証にKeystoneを利用できるものが表示されます。
keystone ec2-credentials-create

[–user <user-id>]

[–tenant_id <tenant-id>]

EC2互換の認証情報を作成する  
keystone ec2-credentials-delete [–user <user-id>] –access <access-key> EC2互換の認証情報を削除する  
keystone ec2-credentials-get [–user <user-id>] –access <access-key> EC2互換の認証情報の詳細を表示する  
keystone ec2-credentials-list [–user <user-id>] EC2互換の認証情報一覧を表示する  
keystone endpoint-create
[–region <endpoint-region>]
[–service_id <service-id>]
[–publicurl <public-url>]
[–adminurl <admin-url>]
[–internalurl <internal-url>]
エンドポイントを作成する 作成の必要はないみたいです。
keystone endpoint-delete <endpoint-id> エンドポイントを削除する  
keystone endpoint-get
–service <service-type>
[–endpoint_type <endpoint-type>]
[–attr <service-attribute>]
[–value <value>]
エンドポイントの詳細情報を表示する  
keystone endpoint-list エンドポイント一覧を表示する  
keystone role-create –name <role-name> ロールを追加する  
keystone role-delete <role-id> ロールを削除する  
keystone role-get <role-id> ロールの詳細情報を表示する role-list 以上に表示される内容はないので使うことはあまりなさそうです。
keystone role-list [–user <user-id>] [–tenant_id <tenant-id>] ロール一覧を表示する  
keystone service-create
–name <name>
–type <type>
[–description <service-description>]
Keystoneを認証に利用するサービスを作成する  
keystone service-delete <service-id> Keystoneを認証に利用しているサービスを削除する  
keystone service-get <service-id> Kyestoneを認証に利用しているサービスの情報を表示する  
keystone service-list 認証にKeystoneを利用しているサービスを表示する  
keystone tenant-create
–name <tenant-name>
[–description <tenant-description>]
[–enabled <true|false>]
テナントを作成する  
keystone tenant-delete <tenant-id> テナントを削除する  
keystone tenant-get <tenant-id> テナントの詳細情報を表示する  
keystone tenant-list テナント一覧を表示する  
keystone tenant-update
[–name <tenant_name>]
[–description <tenant-description>]
[–enabled <true|false>]
<tenant-id>
テナントの情報を更新する  
keystone token-get コマンドを実行しているユーザのトークンを表示する  
keystone user-create | –name <user-name> | [–tenant_id <tenant-id>] | [–pass <pass>] | [–email <email>] | [–enabled <true|false>] ユーザを追加する  
keystone user-delete <user-id> ユーザを削除します。 name でなく id を指定します。
keystone user-get <user-id> 詳細なユーザ情報を表示します。 name でなく id を指定します。
keystone user-list [<tenant-id>] ユーザ情報一覧を表示する  
keystone user-password-update –pass <password> <user-id> ユーザのパスワードを更新する  
keystone user-role-add
–user <user-id>
–role <role-id>
[–tenant_id <tenant-id>]
ユーザにロールを追加する  
keystone user-role-remove
–user <user-id>
–role <role-id>
[–tenant_id <tenant-id>]
ユーザからロールを取り除く  
keystone user-update
[–name <user-name>]
[–email <email>]
[–enabled <true|false>]
<user-id>
Keystoneの情報( ユーザ名 , Email , Endpointステータス の情報を更新する  
keystone discover KeystoneのURLを検索する  
keystone help [<subcommand>] ヘルプを表示する サブコマンドをオプションに追加するとサブオプションのヘルプが表示されます

8.3.1.4. コマンド実行例

コマンドの結果の枠がずれてますが実際はずれないです。

8.3.1.4.1. テナントの作成

テナント名 test のテナントを作成します。

$ keystone tenant-create --name=test
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | None                             |
| enabled     | True                             |
| id          | de71569287ee437bbd1d4a5c836fa2e9 |
| name        | test                             |
+-------------+----------------------------------+

作成したテナントを確認

$ TENANT_ID=$(keystone tenant-list | grep test | awk '{print $2}')
$ keystone tenant-get $TENANT_ID
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | None                             |
| enabled     | True                             |
| id          | de71569287ee437bbd1d4a5c836fa2e9 |
| name        | test                             |
+-------------+----------------------------------+

8.3.1.4.2. ユーザの作成

ユーザ名 test パスワード password のユーザを作成します。

$ keystone user-create --name=test \
>                      --pass=password \
>                      --email=admin@example.com
+----------+-------------------------------------------------------------------------------------------------------------------------+
| Property |                                                          Value                                                          |
+----------+-------------------------------------------------------------------------------------------------------------------------+
| email    | admin@example.com                                                                                                       |
| enabled  | True                                                                                                                    |
| id       | 56de058a7f514c14842ecc6d4552ed9a                                                                                        |
| name     | test                                                                                                                    |
| password | $6$rounds=40000$mlNttf4qNi0Ueso7$mB2K3TLQSqu773ql75MJ966GTf1fOF25xjnMHuUlso0F/LmbVuB8ap.H5YrhXMwa8a0YpJoVqV6z1I3Q7JtFA1 |
| tenantId | None                                                                                                                    |
+----------+-------------------------------------------------------------------------------------------------------------------------+

作成したユーザを確認

$ USER_ID=$(keystone user-list | grep test | awk '{print $2}')
$ keystone user-get $USER_ID
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
| email    | admin@example.com                |
| enabled  | True                             |
| id       | 56de058a7f514c14842ecc6d4552ed9a |
| name     | test                             |
| tenantId | None                             |
+----------+----------------------------------+

8.3.1.4.3. ロールの作成

ロール名 test のロールを作成します。

$ keystone role-create --name=test
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
| id       | 3d5c85f52eb6485fb29a6de8c6bdba9b |
| name     | test                             |
+----------+----------------------------------+

作成したロールを確認

$ ROLE_ID=$(keystone role-list | grep test | awk '{print $2}')
$ keystone role-get $ROLE_ID
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
| id       | 3d5c85f52eb6485fb29a6de8c6bdba9b |
| name     | test                             |
+----------+----------------------------------+

8.3.1.4.4. テナントへのユーザとロールの紐付

テナント名 test へ ユーザ test と ロール を紐付ます。

USER_ID=$(keystone user-list | grep test | awk '{print $2}')
ROLE_ID=$(keystone role-list | grep test | awk '{print $2}')
TENANT_ID=$(keystone tenant-list | grep test | awk '{print $2}')
keystone user-role-add --user $USER_ID --role $ROLE_ID --tenant_id $TENANT_ID

8.3.1.4.5. サービスの作成

サービス名 test のサービスを作成します。

$ keystone service-create --name="nova-test" --type=test --description="Nova Test Service"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | Nova Test Service                |
| id          | a86c04bfe4034210a2f9dd73e8551311 |
| name        | nova-test                        |
| type        | test                             |
+-------------+----------------------------------+

作成したサービスを確認

$ SERVICE_ID=$(keystone service-list | grep test | awk '{print $2}')
$ keystone service-get $SERVICE_ID
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | Nova Test Service                |
| id          | a86c04bfe4034210a2f9dd73e8551311 |
| name        | nova-test                        |
| type        | test                             |
+-------------+----------------------------------+

8.3.1.4.6. エンドポイントの作成

サービス名 test に対するエンドポイント名 test のエンドポイントを作成します。

$ TEST_SERVICE=$(keystone service-list | grep test | awk '{print $2}')
$ keystone endpoint-create \
   --region RegionOne  \
   --service_id $TEST_SERVICE \
   --publicurl http://stack01:12345/services/TEST \
   --adminurl http://stack01:8773/services/TEST \
   --internalurl http://stack01:8773/services/TEST
+-------------+------------------------------------+
|   Property  |               Value                |
+-------------+------------------------------------+
| adminurl    | http://stack01:8773/services/TEST  |
| id          | 7df841fc76094091b23f38d2f80d0c25   |
| internalurl | http://stack01:8773/services/TEST  |
| publicurl   | http://stack01:12345/services/TEST |
| region      | RegionOne                          |
| service_id  | a86c04bfe4034210a2f9dd73e8551311   |
+-------------+------------------------------------+

作成したエンドポイントを確認

$ keystone endpoint-get test
+----------------+------------------------------------+
|    Property    |               Value                |
+----------------+------------------------------------+
| test.publicURL | http://stack01:12345/services/TEST |
+----------------+------------------------------------+

8.3.1.4.7. EC2互換認証の作成

euca-なんたらのコマンドを利用する際に必要になります。

$ TENANT_ID=$(keystone tenant-list | grep test | awk '{print $2}')
$ USER_ID=$(keystone user-list | grep test | awk '{print $2}')
$ keystone ec2-credentials-create --tenant_id=$TENANT_ID --user=$USER_ID
+-----------+----------------------------------+
|  Property |              Value               |
+-----------+----------------------------------+
| access    | b418879adf2648b49806929e6692ff6a |
| secret    | e870d7f39424485ca4661461514b6df4 |
| tenant_id | a5f6eac6acf64ed09edb061ebd94675d |
| user_id   | 56de058a7f514c14842ecc6d4552ed9a |
+-----------+----------------------------------+

作成したEC2互換認証を確認

$ keystone ec2-credentials-list
+--------+----------------------------------+----------------------------------+
| tenant |              access              |              secret              |
+--------+----------------------------------+----------------------------------+
| test   | 89087a6d9f23479abc000f24a10173d7 | 2183b9c692cf48abaea7d95915096b8a |
+--------+----------------------------------+----------------------------------+

使う場合は環境変数として利用します。

$ export EC2_ACCESS_KEY=$(keystone ec2-credentials-list --user $USER_ID | awk '/test / {print $4}')
$ export EC2_SECRET_KEY=$(keystone ec2-credentials-list --user $USER_ID | awk '/test / {print $6}')
$ euca-describe-instances
ESERVATION      r-h5ykwez7      a5f6eac6acf64ed09edb061ebd94675d        default
INSTANCE        i-0000000d      ami-00000001    ss      ss      running None (a5f6eac6acf64ed09edb061ebd94675d, stack01)        0               m1.tiny 2012-03-31T13:56:09.000Z        nova    aki-00000002    ari-00000003            monitoring-disabled     10.0.0.4        10.0.0.4                        instance-store