5.4. Image サービスの設定

Image サービスを設定するには、以下のタスクを完了しておく必要があります。
  • Image サービスの認証のための Identity サービスの設定 (データベースエントリーの作成、接続文字列の設定、設定ファイルの更新)
  • ディスクイメージストレージバックエンドの設定 (本ガイドでは Object Storage サービスを使用)
  • Image サービスへのアクセスのためのファイアウォール設定
  • TLS/SSL の設定
  • Image サービスのデータベースへのデータ投入

5.4.1. Image サービスのデータベース接続の設定

Image サービスによって使用されるデータベース接続文字列は、/etc/glance/glance-api.conf および /etc/glance/glance-registry.conf のファイルで定義されます。サービスを起動する前に、有効なデータベースサーバーをポイントするように更新しておく必要があります。
以下の手順に記載するステップはすべて、Image サービスをホストするサーバーに root ユーザーとしてログインして実行する必要があります。

手順5.2 Image サービスの SQL データベース接続の設定

  1. glance-api.conf ファイルで sql_connection の設定キーの値を設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT sql_connection mysql://USER:PASS@IP/DB
    以下の値を置き換えてください。
    • USER は、Image サービスのデータベースのユーザー名 (通常は glance) に置き換えてください。
    • PASS は選択したデータベースユーザーのパスワードに置き換えます。
    • IP は、データベースサービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。
    • DB は、Image サービスのデータベースの名前 (通常は glance) に置き換えてください。
  2. glance-registry.conf ファイルで sql_connection の設定キーの値を設定します。
    # openstack-config --set /etc/glance/glance-registry.conf \
       DEFAULT sql_connection mysql://USER:PASS@IP/DB
    USERPASSIPDB は、上記のステップで使用した値と同じ値に置き換えます。

重要

この接続設定キーに指定する IP アドレスまたはホスト名は、Image サービスのデータベースの作成時に Image サービスのデータベースユーザーがアクセスを許可された IP アドレスまたはホスト名と一致する必要があります。また、データベースがローカルでホストされ、Image サービスのデータベースの作成時に「localhost」へのアクセス権を付与した場合には、「localost」と入力する必要があります。

5.4.2. Image サービス用のアイデンティティーレコードの作成

Image サービスで必要な Identity サービスのレコードを作成して設定します。これらのエントリーは、Image サービスによって提供されるボリューム機能を検索してアクセスを試みる他の OpenStack サービスを補助します。
以下の手順では、管理ユーザーと services テナントが作成済みであることを前提としています。詳しい説明は、以下のリンクを参照してください。
以下の手順は、Identity サービスのサーバーまたは keystonerc_admin ファイルをコピーして keystone コマンドラインユーティリティーをインストールした任意のマシンで実行してください。

手順5.3 Image サービス用のアイデンティティーレコードの作成

  1. Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
    # source ~/keystonerc_admin
  2. glance ユーザーを作成します。
    [(keystone_admin)]# keystone user-create --name glance --pass PASSWORD
    +----------+----------------------------------+
    | Property |              Value               |
    +----------+----------------------------------+
    |  email   |                                  |
    | enabled  |               True               |
    |   id     | 8091eaf121b641bf84ce73c49269d2d1 |
    |  name    |              glance              |
    | username |              glance              |
    +----------+----------------------------------+
    PASSWORD は、Image サービスが Identity サービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。
  3. services テナントのコンテキスト内で、glance ユーザーと admin ロールを関連付けます。
    [(keystone_admin)]# keystone user-role-add --user glance --role admin --tenant services
  4. glance の Image サービスのエントリーを作成します。
    [(keystone_admin)]# keystone service-create --name glance \
            --type image \
            --description "Glance Image Service"
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    | description |       Glance Image Service       |
    |   enabled   |               True               |
    |      id     | 7461b83f96bd497d852fb1b85d7037be |
    |     name    |              glance              |
    |     type    |               image              |
    +-------------+----------------------------------+
  5. glance エンドポイントエントリーを作成します。
    [(keystone_admin)]#keystone endpoint-create \
            --service glance \
            --publicurl 'http://IP:9292' \ 
            --adminurl 'http://IP:9292' \  
            --internalurl 'http://IP:9292' \
            --region 'RegionOne'
    IP は、Image サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。

5.4.3. Image サービスの認証の設定

Image サービス が認証に Identity サービスを使用するように設定します。以下の手順に記載するステップはすべて、Image サービスをホストする各システムに root ユーザーとしてログインして実行する必要があります。

手順5.4 Image サービスが Identity サービスを使用して認証を行うための設定

  1. glance-api サービスを設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       paste_deploy flavor keystone
    # openstack-config --set /etc/glance/glance-api.conf \
       keystone_authtoken auth_host IP
    # openstack-config --set /etc/glance/glance-api.conf \
       keystone_authtoken auth_port 35357
    # openstack-config --set /etc/glance/glance-api.conf \
       keystone_authtoken auth_protocol http
    # openstack-config --set /etc/glance/glance-api.conf \      
       keystone_authtoken admin_tenant_name services
    # openstack-config --set /etc/glance/glance-api.conf \
       keystone_authtoken admin_user glance
    # openstack-config --set /etc/glance/glance-api.conf \
       keystone_authtoken admin_password PASSWORD
  2. glance-registry サービスを設定します。
    # openstack-config --set /etc/glance/glance-registry.conf \
       paste_deploy flavor keystone
    # openstack-config --set /etc/glance/glance-registry.conf \
       keystone_authtoken auth_host IP
    # openstack-config --set /etc/glance/glance-registry.conf \
       keystone_authtoken auth_port 35357   
    # openstack-config --set /etc/glance/glance-registry.conf \
       keystone_authtoken auth_protocol http
    # openstack-config --set /etc/glance/glance-registry.conf \
       keystone_authtoken admin_tenant_name services
    # openstack-config --set /etc/glance/glance-registry.conf \
       keystone_authtoken admin_user glance
    # openstack-config --set /etc/glance/glance-registry.conf \
       keystone_authtoken admin_password PASSWORD
以下の値を置き換えてください。
  • IP は、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
  • services は、Image サービス用に作成されたテナントの名前に置き換えます (上記の例では、この値を services に設定)。
  • glance は、Image サービス用に作成されたサービスユーザーの名前に置き換えます (上記の例では、この値を glance に設定)。
  • PASSWORD は、サービスユーザーに関連付けられたパスワードに置き換えます。

5.4.4. Object Storage サービスをイメージの保管に使用する方法

デフォルトでは、Image サービスはストレージバックエンドにローカルファイルシステム (file) を使用しますが、アップロードしたディスクイメージを保管するには、次にあげるいずれかのストレージバックエンドを使用することができます。
  • file: イメージサーバーのローカルファイルシステム (/var/lib/glance/images/ ディレクトリー)
  • swift: OpenStack Object Storage サービス

注記

以下の設定手順では、openstack-config コマンドを使用します。ただし、/etc/glance/glance-api.conf ファイルを手動で更新することもできます。このファイルを手動で更新する場合は、default_store パラメーターが正しいバックエンドに設定されていることを確認し (例: 'default_store=rbd')、バックエンドのセクションのパラメーターを更新します ('RBD Store Options' のセクション)。

手順5.5 Image サービスが Object Storage サービスを使用するように設定する手順

  1. default_store 設定キーを swift に設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT default_store swift
  2. swift_store_auth_address 設定キーを Identity サービスのパブリックエンドポイントに設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT swift_store_auth_address http://IP:5000/v2.0/
  3. Object Storage サービスでイメージを保管するコンテナーを追加します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT swift_store_create_container_on_put True
  4. swift_store_user 設定キーは、認証に使用するテナントとユーザーが含まれるように、TENANT:USER: の形式で設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT swift_store_user services:swift
    • 本ガイドの手順に従って Object Storage をデプロイする場合には (上記のコマンド例に記載されているように)、上記の値をそれぞれ services テナントと swift ユーザーに置き換えてください。
    • 本ガイドの手順には従わずに Object Storage をデプロイする場合には、上記の値はその環境の適切な Object Storage テナントとユーザーに置き換える必要があります。
  5. swift_store_key 設定キーを Object Storage サービスのデプロイ時に swift ユーザー用に指定したパスワードに設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT swift_store_key PASSWORD

5.4.5. Image サービスのトラフィックを許可するためのファイアウォール設定

Image サービスは、ポート 9292 経由でネットワークにアクセスできるようにします。以下の手順に記載するステップはすべて、Image サービスをホストするサーバーに root ユーザーとしてログインして実行してください。

手順5.6 Image サービスのトラフィックを許可するためのファイアウォール設定

  1. テキストエディターで /etc/glance/glance-api.conf ファイルを開き、以下のパラメーターの前に付いているコメント文字を削除します。
    bind_host = 0.0.0.0
    bind_port = 9292
  2. テキストエディターで /etc/sysconfig/iptables ファイルを開きます。
  3. ポート 9292 で TCP トラフィックを許可する INPUT ルールを追加します。新規ルールは、トラフィックを REJECT する INPUT ルールよりも前に記載する必要があります。
    -A INPUT -p tcp -m multiport --dports 9292 -j ACCEPT
  4. /etc/sysconfig/iptables ファイルへの変更を保存します。
  5. iptables サービスを再起動して、変更を有効にします。
    # systemctl restart iptables.service

5.4.6. Image サービスのための RabbitMQ メッセージブローカーの設定

RabbitMQ はデフォルト (かつ推奨の) メッセージブローカーです。RabbitMQ メッセージングサービスは、rabbitmq-server パッケージにより提供されます。以下の手順で記載する全ステップは、Image サービスをホストするサーバーに root ユーザーとしてログインして実行する必要があります。

手順5.7 Image サービス (glance) が RabbitMQ メッセージブローカーを使用するための設定

  1. RabbitMQ を通知機能として設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT notification_driver messaging
  2. RabbitMQ のホスト名を設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT rabbit_host RABBITMQ_HOST
    RABBITMQ_HOST は、メッセージブローカーの IP アドレスまたはホスト名に置き換えます。
  3. メッセージブローカーのポートを 5672 に設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT rabbit_port 5672
  4. RabbitMQ の設定時に Image サービス用に作成した RabbitMQ ユーザー名とパスワードを設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT rabbit_userid glance
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT rabbit_password GLANCE_PASS
    glance および GLANCE_PASS は、Image サービス用に作成したRabbitMQ ユーザー名とパスワードに置き換えます。
  5. RabbitMQ の起動時に、glance ユーザーに全リソースに対するパーミッションが付与されます。このアクセスは、特別に仮想ホスト / を介して行われます。Image サービスがこの仮想ホストに接続されるように設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
       DEFAULT rabbit_virtual_host /

5.4.7. Image サービスが SSL を使用するための設定

glance-api.conf ファイルで、以下のオプションを使用して SSL を設定します。

表5.1 Image サービスの SSL オプション

設定オプション説明
cert_file
API サーバーをセキュアに起動する際に使用する証明書ファイルへのパス
key_file
API サーバーをセキュアに起動する際に使用する秘密鍵ファイルへのパス
ca_file
クライアントの接続を検証するのに使用する CA 証明書ファイルへのパス

5.4.8. Image サービスのデータベースへのデータ投入

Image サービスのデータベース接続文字列を適切に設定した後には、Identiy サービスのデータベースにデータを投入します。

手順5.8 Image サービスのデータベースへのデータ投入

  1. Image サービスをホストするシステムにログインします。
  2. glance ユーザーに切り替えます。
    # su glance -s /bin/sh
  3. /etc/glance/glance-api.conf および /etc/glance/glance-registry.conf で特定されているデータベースを初期化し、データを投入します。
    $ glance-manage db_sync

5.4.9. ローカルファイルシステムを介したイメージのロードの有効化

デフォルトでは、Image サービスは HTTP プロトコルを使用してイメージをインスタンスに提供します。具体的には、イメージデータは、イメージストアからコンピュートノードのローカルディスクに HTTP を介して伝送されます。このプロセスは、Image サービスと Compute サービスが別々のホストにインストールされたデプロイメントの大半が対象であるため一般的なプロセスです。

注記

Image サービスと Compute サービスが同じホストにはインストールされていなくても、それらのサービスが共有ファイルシステムを共有している場合は、直接イメージへアクセスすることができます。この場合は、そのファイルシステムを同じ場所にマウントする必要があります。
両サービスが同じホストにインストールされた (その結果、同じファイルシステムを共有する) デプロイの場合には、HTTP のステップを完全にスキップした方がより効率的です。その代わりに、ローカルファイルシステムを介してイメージの送受信をするように Image サービスと Compute サービスの両方を設定する必要があります。
この手順で生成される Image のファイルシステムメタデータは、新規イメージにのみ適用されます。既存のイメージは、このメタデータを使用しません。

手順5.9 Image サービスと Compute サービスがローカルファイルシステムでイメージを送受信するための設定

  1. openstack-nova-compute に要求される Image のファイルシステムメタデータを公開するための JSON ドキュメントを作成します。
  2. Image サービスが JSON ドキュメントを使用するように設定します。
  3. openstack-nova-compute が Image サービスによって提供されるファイルシステムメタデータを使用するように設定します。
Image サービスと Compute サービスの両方が、別々のノードでホストされている場合には、Gluster を使用してローカルファイルシステムの共有をエミュレートすることができます。以下の項では、この点について詳しく説明します。

5.4.9.1. 異なる複数のイメージ/コンピュートノードにわたるファイルシステム共有の設定

Image サービスおよび Compute サービスが異なるノードでホストされている場合でも、イメージをローカルで共有するように設定することが可能です。このためには、Gluster (Red Hat Storage 共有) を使用する必要があります。
Image サービスと Compute サービスの両方が同じ Gluster ボリュームを共有する必要があり、それぞれのノードで、同じボリュームをマウントする必要があります。このように設定することによって、両サービスが同じボリュームにローカルでアクセスすることができるので、ローカルファイルシステムを介したイメージのロードが可能となります。
この設定では、以下の必須のステップを実行する必要があります。
  1. Image サービスをホストするノードと、Compute サービスをホストするノードで、Gluster に必要なパッケージをインストールして設定します。
  2. Image サービスと Compute サービスが共有する GlusterFS ボリュームを作成します。
  3. Image サービスと Compute サービスのノードに GlusterFS ボリュームをマウントします。

注記

上記の手順の説明は、以下のリンクに掲載されている『Configuring Red Hat OpenStack with Red Hat Storage』の最新バージョンを参照してください。
GlusterFS ボリュームの設定が済み、Image サービスのノードにマウントした後には、Compute サービスのノードも設定して、マウントした Gluster ボリュームを使用できるようにする必要があります。

手順5.10 Compute サービスのノードがマウント済みの Gluster ボリュームを使用するための設定

  1. Compute サービスのノードにログインします。
  2. Gluster に必要なパッケージをインストールします。
    # yum install -y glusterfs glusterfs-fuse
  3. Gluster ボリュームをロードするために必要なドライバーが有効化されていることを確認してください。
    1. テキストエディターで /etc/nova/nova.conf 設定ファイルを開きます。
    2. リモートボリューム用の Libvirt ハンドラー (volume_drivers) を探します。このパラメーターの値は、異なるボリュームタイプ別のドライバーのコンマ区切りリストで指定する必要があります。
    3. Compute サービスデプロイメントによっては、volume_drivers がすでに有効化 (アンコメント) されていることがあります。その場合には、Gluster ボリュームのドライバー (glusterfs=nova.virt.libvirt.volume.LibvirtGlusterfsVolumeDriver) もリストされていることを確認してください。volume_drivers パラメーターが無効になっている場合、またはリストされていない場合は、適宜ファイルを編集してください。
  4. Compute サービスがマウント済みの Gluster ボリュームを使用するように設定します。
    # openstack-config --set /etc/nova/nova-conf \
    	DEFAULT glusterfs_mount_point_base GLUSTER_MOUNT
    GLUSTER_MOUNT は、Gluster ボリュームがマウントされるディレクトリーに置き換えます。
  5. Compute サービスを再起動します。
    # systemctl restart openstack-nova-compute.service
Image サービスと Compute サービスで、ローカルファイルシステムにアクセスするかのように、同じファイルシステムへのアクセスをエミュレートできるようになります。これで、ローカルファイルシステムを介したイメージのロードを有効にすることもできます。

5.4.9.2. Image サービスがローカルファイルシステムを介してイメージを提供するための設定

HTTP ではなく、ローカルファイルシステムを使用したイメージのロードを有効にするには、最初に Image サービスがローカルファイルシステムメタデータを openstack-nova-compute サービスに公開する必要があります。この操作は以下の手順に従って実行します。

手順5.11 Compute サービスが Compute サービスに対してローカルファイルシステムメタデータを公開するための設定

  1. Image サービスが使用するファイルシステムのマウントポイントを特定します。
    # df
    Filesystem     1K-blocks     Used Available Use% Mounted on
    /dev/sda3       51475068 10905752  37947876  23% /
    devtmpfs         2005504        0   2005504   0% /dev
    tmpfs            2013248      668   2012580   1% /dev/shm
    たとえば、Image サービスが /dev/sda3 ファイルシステムを使用する場合には、対応するマウントポイントは / です。
  2. 以下のコマンドで、マウントポイントの一意識別子を作成します。
    # uuidgen
    ad5517ae-533b-409f-b472-d82f91f41773
    uuidgen の出力の内容をメモしておきます。この情報は、次のステップで使用します。
  3. .json の拡張子でファイルを作成します。
  4. テキストエディターでファイルを開き、以下の情報を追加します。
    {
    "id": "UID",
    "mountpoint": "MOUNTPT"
    }
    以下の値を置き換えてください。
    • UID は、前のステップで作成した一意識別子に置き換えます。
    • MOUNTPT は、Image サービスのファイルシステムのマウントポイント (最初のステップで特定したマウントポイント) に置き換えます。
  5. Image サービスが JSON ファイルを使用するように設定します。
    # openstack-config --set /etc/glance/glance-api.conf \
    	DEFAULT show_multiple_locations True
    # openstack-config --set /etc/glance/glance-api.conf \
    	DEFAULT filesystem_store_metadata_file JSON_PATH
    JSON_PATH は、JSON ファイルへの完全なパスに置き換えます。

    重要

    適切なポリシー設定を行わずに設定した場合には、Image サービスの管理者以外のユーザーでもアクティブなイメージデータを置き換えることができてしまいます (他のユーザーへの通知なしに現在のイメージが切り替えられる可能性があります)。設定情報に関する OSSN 通知 (推奨のアクション) は https://wiki.openstack.org/wiki/OSSN/OSSN-0065 を参照してください。
  6. Image サービスを再起動します (すでに実行されていない場合)。
    # systemctl restart openstack-glance-registry.service
    # systemctl restart openstack-glance-api.service
この手順で生成される Image のファイルシステムメタデータは、新規イメージにのみ適用されます。既存のイメージは、このメタデータを使用しません。

5.4.9.3. Compute サービスがローカルファイルシステムメタデータを使用するための設定

Image サービスがファイルシステムメタデータを公開するように設定した後には、そのメタデータを Compute サービスが使用するように設定することができます。この操作により openstack-nova-compute がローカルファイルシステムからイメージをロードできるようになります。

手順5.12 Compute サービスが Image サービスによって提供されるローカルファイルシステムメタデータを使用するための設定

  1. file:// スキームを使ったダイレクト URL の使用を有効にするように openstack-nova-compute を設定します。
    # openstack-config --set /etc/nova/nova.conf \
    	DEFAULT allowed_direct_url_schemes file
  2. Image サービスのファイルシステム用のエントリーを作成します。
    # openstack-config --set /etc/nova/nova.conf \
    	image_file_url filesystems FSENTRY
    FSENTRY は Image サービスのファイルシステムに割り当てる名前に置き換えます。
  3. Image サービスがローカルファイルシステムメタデータを公開するために使用する .json ファイルを開きます。次のステップでは、このファイルに記載されている情報を使用します。
  4. Image サービスによって公開されるファイルシステムメタデータにエントリーを関連付けます。
    # openstack-config --set /etc/nova/nova.conf \
    	image_file_url:FSENTRY id UID
    # openstack-config --set /etc/nova/nova.conf \
    	image_file_url:FSENTRY mountpoint MOUNTPT
    以下の値を置き換えてください。
    • UID は、Image サービスが使用する一意識別子に置き換えます。Image サービスによって使用される .json ファイルでは、UID"id": の値です。
    • MOUNTPT は Image サービスのファイルシステムが使用するマウントポイントに置き換えます。Image サービスが使用する .json ファイルでは、MOUNTPT"mountpoint": の値です。