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)]# openstack user create --password PASSWORD glance
    +----------+----------------------------------+
    | Field    | Value                            |
    +----------+----------------------------------+
    | email    | None                             |
    | enabled  | True                             |
    | id       | b1f665b15a7943ccb4668c9e78e98a7c |
    | name     | glance                           |
    | username | glance                           |
    +----------+----------------------------------+
    PASSWORD は、Image サービスが Identity サービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。
  3. services テナントのコンテキスト内で、glance ユーザーと admin ロールを関連付けます。
    [(keystone_admin)]# openstack role add --project services --user glance admin
  4. glance の Image サービスのエントリーを作成します。
    [(keystone_admin)]# openstack service create --name glance \
            --description "Glance Image Service" \
            image
  5. glance エンドポイントエントリーを作成します。
    [(keystone_admin)]#openstack endpoint create \
            --publicurl 'http://IP:9292' \ 
            --adminurl 'http://IP:9292' \  
            --internalurl 'http://IP:9292' \
            --region RegionOne \
            glance
    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 サービスによって提供されるファイルシステムメタデータを使用するように設定します。

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

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

手順5.10 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 ファイルへの完全なパスに置き換えます。
  6. Image サービスを再起動します (すでに実行されていない場合)。
    # systemctl restart openstack-glance-registry.service
    # systemctl restart openstack-glance-api.service
この手順で生成される Image のファイルシステムメタデータは、新規イメージにのみ適用されます。既存のイメージは、このメタデータを使用しません。

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

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

手順5.11 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": の値です。