Post

安装OpenStack(openSUSE) Step by Step - Image (Glance)

上一篇:安装OpenStack(openSUSE) Step by Step - Identity (Keystone)


OpenStack Image Service - Glance

跟随OpenStack Installation Guide for Ubuntu 12.04的节奏,我们遇到了Glance。简单地说,它提供磁盘镜像服务。


安装Glance

配置好OpenStack的源后,可以直接安装

$ zypper in openstack-glance python-glanceclient

配置Glance

配置MySQL

与Keystone相似,我们需要初始化一个数据库用于Glance服务。

$ mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL ON glance.* TO 'glance'@'%' IDENTIFIED BY '[glance的数据库密码]';
mysql> GRANT ALL ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '[glance的数据库密码]';
mysql> quit

修改glance-api配置

设置glance-api,配置文件为/etc/glance/glance-api.conf

打开两个版本的API

1
2
enable_v1_api=true
enable_v2_api=true

使用Keystone作为验证工具。

1
flavor=keystone

根据Keystone中有关Terent、User、Role的设置(参见上一篇:安装OpenStack(openSUSE) Step by Step - Identity (Keystone)) 配置其它参数

1
2
3
4
5
6
7
8
9
[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = glance
[paste_deploy]
config_file = /etc/glance/glance-api-paste.ini

配置数据库地址,并注释SQLite相关的内容

1
2
3
sql_connection = mysql://glance:[glance的数据库密码]@localhost/glance
# [sql]
# connection = sqlite:////var/lib/glance/glance.db

然后,重启glance-api

$ service openstack-glance-api restart

修改glance-registry配置

与glance-api类似,在/etc/glance/glance-registry.conf中设置

1
2
3
4
5
6
7
8
9
10
[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = glance
[paste_deploy]
config_file = /etc/glance/glance-registry-paste.ini
flavor=keystone

数据库设置

1
2
3
sql_connection = mysql://glance:[glance的数据库密码]@localhost/glance
# [sql]
# connection = sqlite:////var/lib/glance/glance.db

再修改/etc/glance/glance-registry-paste.ini,打开Keystone验证模块1

1
2
3
# Use this pipeline for keystone auth
[pipeline:glance-registry-keystone]
pipeline = authtoken context registryapp

重启glance-registry

$ service openstack-glance-registry restart

初始化数据库

数据库初始化,再次重启所有的服务

$ glance-manage version_control 0
$ glance-manage db_sync
$ service openstack-glance-api restart
$ service openstack-glance-registry restart

注意,如果glance-manage version_control 0命令没有在glance-manage db_sync前执行的话,验证时执行任何glance命令都会返回500错误。在api.log中只是说glance-registry返回了500 Internal Server Error,而registry.log中根本看不出错误在哪。2

这种错误的症状是数据库glance中只有一个table:migrate_version

mysql> use glance;
Database changed
mysql> show tables;
+------------------+
| Tables_in_glance |
+------------------+
| migrate_version  |
+------------------+

解决方法:重建数据库

$ mysql -u root -p
mysql> DROP DATABASE glance;
mysql> CREATE DATABASE glance;
mysql> GRANT ALL ON glance.* TO 'glance'@'%' IDENTIFIED BY '[glance的数据库密码]';
mysql> GRANT ALL ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '[glance的数据库密码]';
mysql> quit
$ glance-manage version_control 0
$ glance-manage db_sync

最后查看数据库glance:

mysql> use glance;
Database changed
mysql> show tables;
+------------------+
| Tables_in_glance |
+------------------+
| image_locations  |
| image_members    |
| image_properties |
| image_tags       |
| images           |
| migrate_version  |
+------------------+

验证安装

首先下载一个测试用的镜像,参考文档中的cirros镜像

1
http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img

或者Ubuntu的Cloud Image

wget太慢,可以用浏览器下。

环境变量

管理账户的home目录下可以新建一个openrc文件,保存admin相关的环境变量

1
2
3
4
5
export OS_USERANME=admin
export OS_TENANT_NAME=demo
export OS_PASSWORD=[admin的密码]
export 0S_AUTH_URL=http://localhost:5000/v2.0/
export OS_REGION_NAME=RegionOne

新建镜像

$ . openrc
$ glance image-create --name="Cirros 0.3.1" --disk-format=qcow2 \
--container-format bare < cirros-0.3.1-x86_64-disk.img

参考文档

OpenStack Installation Guide for Ubuntu 12.04


脚注

  1. 实际上原本就有,不需要修改。 

  2. registry.log中最后一句为数据库回滚ROLLBACK,没有任何错误,但就是因为数据库没有正确初始化造成的。笔者在这里卡了两天两夜,最后在https://bugs.launchpad.net/glance/+bug/1157347找到原因。 

This post is licensed under CC BY 4.0 by the author.