实验环境

在源码部署 Keystone 之后,继续进行 Glance 的部署。环境设定和 Keystone 部署相关操作见 Ubuntu 18.04 源码安装 Keystone (Victoria)

准备工作

数据库配置

MySQL 数据库配置,密码 mysql

1
2
# 连接数据库
sudo mysql -u root -p
1
2
3
4
5
6
7
8
9
-- 创建数据库
CREATE DATABASE glance;

-- 创建用户 glance
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';

-- 创建完毕退出
exit

身份认证和 API 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 创建脚本
cat <<EOF>> admin-openrc
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://127.0.0.1:5000/v3
export OS_IDENTITY_API_VERSION=3
EOF

# 加载环境变量
. admin-openrc

# 创建项目
openstack project create --domain default --description "Service Project" service

# 创建用户,设置密码为 glance
openstack user create --domain default --password-prompt glance

# 将用户添加到 admin 角色
openstack role add --project service --user glance admin
# 无输出

创建服务实体和服务 API 端点

1
2
3
4
5
6
7
# 创建服务实体
openstack service create --name glance --description "OpenStack Image" image

# 创建服务 API 端点(endpoint)
openstack endpoint create --region RegionOne image public http://127.0.0.1:9292
openstack endpoint create --region RegionOne image internal http://127.0.0.1:9292
openstack endpoint create --region RegionOne image admin http://127.0.0.1:9292

Glance 部署

安装依赖

下载 Glance 源码,指定 Victoria 版本

1
2
# 下载源码
git clone https://github.com/openstack/glance.git --branch stable/victoria --single-branch

进入 Glance 目录安装相关依赖

1
2
3
4
5
# 进入目录
cd glance

# 安装依赖
sudo apt install $(bindep -b) -y

使用 pip 安装相关依赖

1
2
pip install -r requirements.txt
pip install -r test-requirements.txt

配置文件

使用 tox 生成配置文件

1
tox -e genconfig

手动创建目录,将配置文件拷贝过去

1
2
3
4
5
6
7
8
9
# 创建目录
sudo mkdir /etc/glance

# 拷贝配置文件
sudo cp etc/glance-api.conf /etc/glance/glance-api.conf
sudo cp etc/glance-api-paste.ini /etc/glance/glance-api-paste.ini

# 编辑配置文件
sudo vim /etc/glance/glance-api.conf

在相应的小节添加配置,没有安装 memcached 所以对应的配置注释掉了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@localhost/glance

[keystone_authtoken]
www_authenticate_uri = http://localhost:5000/v3
auth_url = http://localhost:5000/v3
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = glance
#memcached_servers = localhost:11211

[paste_deploy]
flavor = keystone

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

启用服务

安装 Glance

1
sudo python setup.py install

启用 Glance 镜像服务

PS:这里使用 .tox 文件夹下的工具,否则会报错,反正最终的结果是写入数据库,所以这里的问题暂时不管

1
2
3
4
5
6
7
8
# 填充数据库
.tox/genconfig/bin/glance-manage db_sync

# 启用服务(后台)
sudo glance-api --config-file=/etc/glance/glance-api.conf --config-file=/etc/glance/glance-api-paste.ini > /dev/null 2>&1 &

# debug 直接输出
sudo glance-api --config-file=/etc/glance/glance-api.conf --config-file=/etc/glance/glance-api-paste.ini --debug

测试

使用 OpenStack Client 执行一些和镜像有关的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 设置环境变量
. admin-openrc

# 列出镜像
openstack image list

# 下载源镜像
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img

# 上传镜像到镜像服务,公开可见(所有项目都可以访问)
openstack image create "cirros" \
--file cirros-0.4.0-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public

# 列出镜像
openstack image list

参阅