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

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

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

6.2.4.1. Glanceのダウンロード

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

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

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

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

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

6.2.4.2. Glanceのインストール

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

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

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

6.2.4.4. Glanceの設定

サンプルのコンフィグをコピーして設定します。

$ sudo cp -a /opt/glance/etc/* /etc/glance
GlanceのコンフィグはAPI、Registry、Cache、Scrubberの4つがありますがAPI、Registryの設定を行います。
具体的には、glance-api.conf glance-registry.conf の2つのコンフィグを変更します。
ホスト名はインストールを行なっているホスト名、テナント名、ユーザ名、パスワードはKeystoneで設定したものを設定して下さい。

6.2.4.4.1. glance-api.conf glance-registry.conf

まず、SQL接続用設定を変更します。
$ cd /etc/glance
$ sudo vi glance-api.conf glance-registry.conf

sql_connection = mysql://glance:password@stack01/glance?charset=utf8
[filter:authtoken]の項目を変更します。
admin_tenant_name = service
admin_user = glance
admin_password = password
[paste_deploy]の項目にkeystoneの設定を追加します。
[paste_deploy]
flavor = keystone
glance-apiの通知設定をします。
$ sudo vi glance-api.conf
notifier_strategy = rabbit

rabbit_host=stack01
rabbit_port = 5672
rabbit_use_ssl = false
rabbit_userid=nova
rabbit_password=password
rabbit_virtual_host=/nova
rabbit_notification_exchange = glance
rabbit_notification_topic = glance_notifications
また、ホスト名を変更しておきます。こちらもホスト名は適切なもので設定して下さい。
$ sudo sed -i "s#127.0.0.1#stack01#" /etc/glance/glance-api.conf
$ sudo sed -i "s#localhost#stack01#" /etc/glance/glance-api.conf
$ sudo sed -i "s#127.0.0.1#stack01#" /etc/glance/glance-registry.conf
$ sudo sed -i "s#localhost#stack01#" /etc/glance/glance-registry.conf

6.2.4.5. データベースの作成

Glanceが利用するデータベースを作成します。
データベース名glance、ユーザ名glance、パスワードはpasswordとしているため適切なものへ変更してください。
$ mysql -u root -pnova -e "drop database if exists glance;"
$ mysql -u root -pnova -e "create database glance character set utf8;"
$ MYSQL_PASS_GLANCE=password
$ NOVA_CONTOLLER_HOSTNAME=stack01
$ 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_GLANCE';"
$ mysql -u root -pnova -e "grant all privileges on glance.* to 'glance'@'$NOVA_CONTOLLER_HOSTNAME' identified by '$MYSQL_PASS_GLANCE';"
$ sudo glance-manage db_sync

6.2.4.6. プロセスの起動

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

6.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

6.2.4.6.2. プロセスの起動

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

$ chown glance:glance /var/log/glance
$ 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

6.2.4.7. イメージの登録

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

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

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

ファイルのダウンロード

$ sudo mkdir -p /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
マシンイメージの登録
$ export OS_USERNAME=admin
$ export OS_PASSWORD=password
$ export OS_TENANT_NAME=admin
$ export OS_AUTH_URL=http://stack01:35357/v2.0/
$ glance image-create --name="Ubuntu 12.04 TLS" --is-public=true --container-format=ovf --disk-format=qcow2 < ubuntu-12.04-server-cloudimg-amd64-disk1.img

6.2.4.7.2. イメージの登録確認

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

$ glance image-list
+--------------------------------------+------------------+-------------+------------------+-----------+--------+
| ID                                   | Name             | Disk Format | Container Format | Size      | Status |
+--------------------------------------+------------------+-------------+------------------+-----------+--------+
| 90645f43-3156-4024-90a3-c97feac8a38d | Ubuntu 12.04 LTS | qcow2       | ovf              | 233242624 | active |
+--------------------------------------+------------------+-------------+------------------+-----------+--------+

$ glance show 90645f43-3156-4024-90a3-c97feac8a38d
URI: http://stack01:9292/v1/images/90645f43-3156-4024-90a3-c97feac8a38d
Id: 90645f43-3156-4024-90a3-c97feac8a38d
Public: Yes
Protected: No
Name: Ubuntu 12.04 LTS
Status: active
Size: 233242624
Disk format: qcow2
Container format: ovf
Minimum Ram Required (MB): 0
Minimum Disk Required (GB): 0
Owner: 9242ed0fd4d34bd98337389ca4eb1624
Created at: 2012-10-30T01:16:12
Updated at: 2012-10-30T01:16:14
以上でGlanceの設定及びイメージのアップロードは終わりです。
何も設定していないためGlanceはバックエンドストレージはローカルストレージを利用しています。