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

4.2.4. Image delivery and registration (Glance)のインストール

Image delivery and registrationのコード名はGlanceです。
Glanceは仮想マシンのイメージの管理を行うコンポーネントです。
仮想マシンの起動イメージをどのバックエンドストレージに配置するか、そして設定したバックエンドストレージのダウンロード、アップロード、削除などを行います。
バックエンドストレージはローカルディスク、S3、Swiftが利用可能です。
また、GlusterFSと組み合わせても高可用性を実現出来ます。
ここでは、ローカルディスクを利用します。

4.2.4.1. Glanceのダウンロード

Glanceのソースをダウンロードします。
ダウンロードしたバージョンはMasterになっているためバージョンはどちらもEssexにします。

4.2.4.1.1. Glanceのソースをダウンロード

$ sudo git clone git://github.com/openstack/glance /opt/glance

GlanceのバージョンをEssexに固定

$ cd /opt/glance ; sudo git checkout -b essex origin/stable/essex

4.2.4.2. Glanceのインストール

ダウンロードしたGlanceをインストールします。
依存関係でSwiftなどをインストールしようとしますがインストールは別途行えば問題ないのでコメントアウトします。
pipでパッケージの依存関係を解決します。
$ sudo sed -i 's/^-e/#-e/' /opt/glance/tools/pip-requires
$ sudo pip install -r /opt/glance/tools/pip-requires
$ cd /opt/glance && sudo python setup.py install

4.2.4.3. Glanceが利用するユーザ、ディレクトリなどの作成

ソースからインストールする場合はユーザやディレクトリを作成する必要がありますので作成します。
$ sudo useradd glance -m -d /var/lib/glance -s /bin/false
$ sudo usermod -G $STACK_USER glance
$ sudo mkdir /etc/glance /var/log/glance
$ sudo mkdir /var/lib/glance/scrubber /var/lib/glance/image-cache

4.2.4.4. Glanceの設定

元のディレクトリをバックアップしておきます。

$ sudo cp -a /opt/glance/etc/* /etc/glance
$ sudo cp -a /etc/glance /etc/glance_orig
Glanceは認証なしでも動作は出来ますがKeystone連携を行うための設定を行います。
GlanceのコンフィグはAPI、Registry、Cache、Scrubberの4つがありますがAPI、RegistryとCacheの設定を行います。
具体的には、glance-api-paste.ini glance-api.conf glance-registry-paste.ini glance-registry.conf の4つのコンフィグを変更します。
ホスト名はインストールを行なっているホスト名、テナント名、ユーザ名、パスワードはKeystoneで設定したものを設定して下さい。
ここではサンプルシェルを利用したものを設定しています。

4.2.4.4.1. glance-api-paste.ini,glance-registry-paste.iniの設定

どちらのコンフィグも同じ設定で差分も同じです。
[filter:authtoken]の項目を変更します。

変更前

[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
service_protocol = http
service_host = 127.0.0.1
service_port = 5000
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
auth_uri = http://127.0.0.1:5000/
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%

変更後

[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
service_protocol = http
service_host = stack01
service_port = 5000
auth_host = stack01
auth_port = 35357
auth_protocol = http
auth_uri = http://stack01:5000/
admin_tenant_name = admin
admin_user = admin
admin_password = password

差分はglance-api-paste.iniもglance-registry-paste.iniも同じです。

$ sudo diff glance_orig/glance-api-paste.ini glance/glance-api-paste.ini
68c68
< service_host = 127.0.0.1
---
> service_host = stack01
70c70
< auth_host = 127.0.0.1
---
> auth_host = stack01
73,76c73,76
< auth_uri = http://127.0.0.1:5000/
< admin_tenant_name = %SERVICE_TENANT_NAME%
< admin_user = %SERVICE_USER%
< admin_password = %SERVICE_PASSWORD%
---
> auth_uri = http://stack01:5000/
> admin_tenant_name = admin
> admin_user = admin
> admin_password = password

4.2.4.4.2. glance-api.conf,glance-registry.confの設定

Keystone連携を行うための設定を最終行に追加します。
また、複数サーバ構築時のためにホスト名も変更しておきます。

どちらのコンフィグにも以下の2行を最下行に追加します。

[paste_deploy]
flavor = keystone
glance-registry.confはデータベースへの接続先が記述されていますので変更します。
24行目です。ホスト名、パスワードは適切なものを設定して下さい。

変更前

sql_connection = sqlite:///glance.sqlite

変更後

sql_connection = mysql://glance:password@stack01/glance

また、ホスト名を変更しておきます。こちらもホスト名は適切なもので設定して下さい。

$ sudo sed -i "s#127.0.0.1#stack01#" /etc/glance/glance-api.conf
$ sudo sed -i "s#127.0.0.1#stack01#" /etc/glance/glance-registry.conf

glance-api.confの差分

# diff glance_orig/glance-api.conf glance/glance-api.conf
140,141c140,141
< # For swauth, use something like '127.0.0.1:8080/v1.0/'
< swift_store_auth_address = 127.0.0.1:35357/v2.0/
---
> # For swauth, use something like 'stack01:8080/v1.0/'
> swift_store_auth_address = stack01:35357/v2.0/
184c184
< s3_store_host = 127.0.0.1:8080/v1.0/
---
> s3_store_host = stack01:8080/v1.0/
242a243,245
>
> [paste_deploy]
> flavor = keystone

glance-registry.confの差分

24c24
< sql_connection = mysql://glance:glance@localhost/glance
---
> sql_connection = mysql://glance:password@stack01/glance
61a62,64
>
> [paste_deploy]
> flavor = keystone

4.2.4.4.3. glance-cache.confの設定

イメージのキャッシュの設定です。Keystone認証を設定します。

変更前

# Auth settings if using Keystone
# auth_url = http://127.0.0.1:5000/v2.0/
# admin_tenant_name = %SERVICE_TENANT_NAME%
# admin_user = %SERVICE_USER%
# admin_password = %SERVICE_PASSWORD%

変更後

auth_url = http://stack01:5000/v2.0/
admin_tenant_name = admin
admin_user = admin
admin_password = password

差分は以下のとおりです。

$ diff /opt/glance/etc/glance-cache.conf /etc/glance/glance-cache.conf
40,43c40,43
< # auth_url = http://127.0.0.1:5000/v2.0/
< # admin_tenant_name = %SERVICE_TENANT_NAME%
< # admin_user = %SERVICE_USER%
< # admin_password = %SERVICE_PASSWORD%
---
> auth_url = http://stack01:5000/v2.0/
> admin_tenant_name = admin
> admin_user = admin
> admin_password = password

4.2.4.5. データベースの作成

Glanceが利用するデータベースを作成します。
データベース名glance、ユーザ名glance、パスワードはpasswordとしているため適切なものへ変更してください。
$ mysql -u root -pnova -e "create database glance;"
$ mysql -u root -pnova -e "grant all privileges on glance.* to 'glance'@'%' identified by '$MYSQL_PASS_GLANCE';"
$ mysql -u root -pnova -e "grant all privileges on glance.* to 'glance'@'localhost' identified by '$MYSQL_PASS_NOVA';"
$ mysql -u root -pnova -e "grant all privileges on glance.* to 'glance'@'$NOVA_CONTOLLER_HOSTNAME' identified by '$MYSQL_PASS_NOVA';"
$ sudo glance-manage db_sync

4.2.4.6. プロセスの起動

Glanceのプロセスを起動します。起動スクリプトが必要なため作成します。

4.2.4.6.1. 起動スクリプトの用意

apiとregistryの2つが必要です。

$ cat << 'GLANCE_API' | sudo tee /etc/init/glance-api.conf > /dev/null
description "Glance API server"
author "Soren Hansen <soren@linux2go.dk>"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [016]

respawn

exec su -s /bin/sh -c "exec glance-api" glance
GLANCE_API

$ cat << 'GLANCE_REG' | sudo tee /etc/init/glance-registry.conf > /dev/null
description "Glance registry server"
author "Soren Hansen <soren@linux2go.dk>"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [016]

respawn

exec su -s /bin/sh -c "exec glance-registry" glance
GLANCE_REG

4.2.4.6.2. プロセスの起動

データベースを作成するときにrootがログを吐くみたいなのでオーナーを変更しておいて起動します。

$ chown glance:glance /var/log/glance/*
$ chown glance:glance /var/lib/glance/*
$ for i in api registry
do
  start glance-$i ; restart glance-$i
done

4.2.4.7. イメージの登録

独自イメージの作成方法及びoz-installを利用するものについては別途記述します。
ここでは予め作成されているfedora16を登録します。

4.2.4.7.1. 環境変数の設定

イメージを登録する際にはKeystoneと同じくオプションを設定する必要があります。
Keystoneで利用したものが利用できますので読み込んでおきましょう。
$ export OS_USERNAME=admin
$ export OS_PASSWORD=password
$ export OS_TENANT_NAME=admin
$ export OS_AUTH_URL=http://localhost:5000/v2.0/

4.2.4.7.2. Ubuntu12.04のイメージの登録

イメージの置き場所は/opt/virtとします。

ファイルのダウンロード

$ sudo mkdir /opt/virt/ubuntu12.04 ; cd /opt/virt/ubuntu12.04
$ sudo wget http://cloud-images.ubuntu.com/releases/precise/release/ubuntu-12.04-server-cloudimg-amd64-disk1.img

マシンイメージの登録

$ glance add name="Ubuntu 12.04 LTS" is_public=true container_format=ovf disk_format=qcow2 < ubuntu-12.04-server-cloudimg-amd64-disk1.img

4.2.4.7.3. イメージの登録確認

作業によりイメージが問題なく登録されたかを確認します。

$ glance index
以上でGlanceの設定及びイメージのアップロードは終わりです。
何も設定していないためGlanceはバックエンドストレージはローカルストレージを利用しています。
Swiftなどをバックエンドにする方法は後で記述します。