3.9. Identity サービスのインストールの検証

Identity サービスのインストールが正しく機能していることを確認します。以下の手順で記載するすべてのステップは、Identity サーバーまたは環境内の他のサービスで実行する必要があります。ログインするユーザーは、管理ユーザーおよび一般ユーザーとして認証するために、それぞれの必要な環境変数が含まれている keystonerc_adminkeystonerc_user のファイルへのアクセス権が必要です。また、システムには、httpd、mod_wsgi、mod_ssl (セキュリティー目的) をインストールしておく必要があります。

手順3.13 Identity サービスのインストールの検証

  1. 管理ユーザーとして、Keystone にアクセスするためのシェルを設定します。
    # source ~/keystonerc_admin
  2. システムで定義されているユーザーの一覧を表示します。
    [(keystone_admin)]# keystone user-list
    +----------------------------------+--------+---------+------------------+
    |                id                |  name  | enabled |      email       |
    +----------------------------------+--------+---------+------------------+
    | 94d659c3c9534095aba5f8475c87091a | admin  |   True  |                  |
    | b8275d7494dd4c9cb3f69967a11f9765 |  USER  |   True  |                  |
    +----------------------------------+--------+---------+------------------+
    システムで定義されているユーザーの一覧が表示されます。一覧が表示されない場合には、インストールに問題があります。
    1. 返されたメッセージでパーミッションまたは認証に問題があることが示されている場合には、管理者ユーザーアカウント、テナント、ロールが正しく作成されていることを確認します。また、3 つのオブジェクトが正しくリンクされていることも確認します。
      Unable to communicate with identity service: {"error": {"message": "You are not authorized to perform the requested action: admin_required", "code": 403, "title": "Not Authorized"}}. (HTTP 403)
    2. 返されたメッセージで接続に問題があることが示されている場合には、openstack-keystone サービスが実行中であることと、ポート 5000 および 35357 での接続を許可するようにファイアウォールサービスが設定されていることを確認してください。
      Authorization Failed: [Errno 111] Connection refused
  3. 一般の Identity サービスユーザーとして、Keystone にアクセスするためのシェルを設定します。
    # source ~/keystonerc_user
  4. システムで定義されているユーザーの一覧を表示してみます。
    [(keystone_user)]# keystone user-list
    Unable to communicate with identity service: {"error": {"message": "You are not authorized to perform the requested action: admin_required", "code": 403, "title": "Not Authorized"}}. (HTTP 403)
    このコマンドを実行する権限がないこと (Not Authorized) を示すエラーメッセージが表示されます。このエラーメッセージが表示されず、代わりにユーザー一覧が表示された場合には、その一般ユーザーアカウントに誤って admin ロールが関連付けられていたことになります。
  5. 一般ユーザーアカウントがアクセス権限のあるコマンドを実行できることを検証します。
    [(keystone_user)]# keystone token-get
    +-----------+----------------------------------+
    |  Property |              Value               |
    +-----------+----------------------------------+
    |  expires  |       2013-05-07T13:00:24Z       |
    |     id    | 5f6e089b24d94b198c877c58229f2067 |
    | tenant_id | f7e8628768f2437587651ab959fbe239 |
    |  user_id  | 8109f0e3deaf46d5990674443dcf7db7 |
    +-----------+----------------------------------+

3.9.1. Identity クライアント (keystone) の接続性における問題のトラブルシューティング

Identity クライアント (keystone) が Identity サービスと通信できない場合には、次のようなエラーが返されます。
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
この問題をデバッグするには、以下にあげる一般的な原因を確認してください。
Identity サービスが稼働していない場合
Identity サービスをホストするシステムで、サービスのステータスを確認します。
# openstack-status | grep keystone
openstack-keystone:                     active
サービスが実行されていない場合には、root ユーザーとしてログインして起動します。
# service openstack-keystone start
ファイアウォールが適切に設定されていない場合
ファイアウォールがポート 500035357 で TCP トラフィックを許可するように設定されていない可能性があります。「Identity サービスのトラフィックを許可するためのファイアウォール設定」で設定を正しく修正する方法を参照してください。
サービスエンドポイントが正しく定義されていない場合
Identity サービスをホストするサーバーで、エンドポイントが正しく定義されているかどうかを確認します。

手順3.14 Identity サービスのエンドポイントの確認

  1. 管理トークンを取得します。
    # grep admin_token /etc/keystone/keystone.conf
    admin_token = 0292d404a88c4f269383ff28a3839ab4
  2. 事前に定義されている Identity サービス関連の環境変数の設定を解除します。
    # unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URL
  3. 管理トークンとエンドポイントを使用して、Identity サービスとの認証を行います。Identity サービスのエンドポイントが正しいことを確認してください。
    # keystone --os-token TOKEN \
       --os-endpoint ENDPOINT \
       endpoint-list
    TOKEN は管理トークンの ID に、ENDPOINT は 管理エンドポイント (http://IP:35357/v2.0) のエンドポイントに置き換えます。
    一覧表示された Identity サービスの publicurlinternalurl、および adminurl が正しいことを確認してください。特に、各エンドポイント内にリストされている IP アドレスとポート番号が正しく、ネットワーク上で到達可能であるようにしてください。
  4. これらの値が正しくない場合には、正しいエンドポイントの追加方法について記載した「Identity サービスエンドポイントの作成」の説明を参照してください。正しいエンドポイントが追加されたら、誤ったエンドポイントを削除します。
    # keystone --os-token=TOKEN \
       --os-endpoint=ENDPOINT \
       endpoint-delete ID
    TOKEN および ENDPOINT は、上記のステップで特定した値に置き換えます。IDendpoint-list アクションにより一覧表示される、削除対象のエンドポイントに置き換えます。