3、镜像服务

3.1、创建一个数据库、服务凭证和API端点

3.1.1、完成下面的步骤以创建数据库:

用数据库连接客户端以 root 用户连接到数据库服务器:

# mysql -u root -p

创建 glance 数据库:

CREATE DATABASE glance;

对``glance``数据库授予恰当的权限:

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'P@ssw0rd';

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'P@ssw0rd';

flush privileges;


3.1.2、获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

# . admin-openrc


3.1.3、创建服务证书

创建 glance 用户:

# openstack user create --domain default --password-prompt glance


添加 admin 角色到 glance 用户和 service 项目上

# openstack role add --project service --user glance admin


创建``glance``服务实体:

# openstack service create --name glance --description "OpenStack Image" image


3.1.4、创建镜像服务的 API 端点

openstack endpoint create --region RegionOne image public http://controller:9292


openstack endpoint create --region RegionOne image internal http://controller:9292


openstack endpoint create --region RegionOne image admin http://controller:9292


3.2、安全并配置组件

3.2.1、安装软件包

# yum install openstack-glance -y


3.2.2、编辑文件 /etc/glance/glance-api.conf 并完成如下动作:

在 [database] 部分,配置数据库访问:

connection = mysql+pymysql://glance:P@ssw0rd@controller/glance


在 [keystone_authtoken] 部分,配置认证服务访问:

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = P@ssw0rd

注解:在 [keystone_authtoken] 中注释或者删除其他选项


在[paste_deploy] 部分,配置认证服务访问:

flavor = keystone


在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

注意:这里设置了系统镜像目录,要确认目录是否存在,本次部署如下图所以已经存在且权限清晰。


如不存在就创建目录并赋权:

mkdir /var/lib/glance/images/

chown glance. /var/lib/glance/images/


3.2.3、编辑文件 ``/etc/glance/glance-registry.conf``并完成如下动作:

在 [database] 部分,配置数据库访问:

connection = mysql+pymysql://glance:P@ssw0rd@controller/glance


在 [keystone_authtoken]部分,配置认证服务访问:

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = P@ssw0rd

注解:在 [keystone_authtoken] 中注释或者删除其他选项。


在 [paste_deploy]部分,配置认证服务访问:

flavor = keystone


3.2.4、写入镜像服务数据库:

# su -s /bin/sh -c "glance-manage db_sync" glance


3.3、启动镜像服务、配置他们随机启动

# systemctl enable openstack-glance-api.service openstack-glance-registry.service

# systemctl start openstack-glance-api.service openstack-glance-registry.service


3.4、验证操作(在控制节点上执行这些命令)

3.4.1、获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

# . admin-openrc


3.4.2、下载源镜像

# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img


3.4.3、使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:

# openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public

如上图所示,镜像上传成功,已经到指定目录:/var/lib/glance/images/

说明:如果没有执行 admin-openrc就会报错,如下图所示:


3.4.4、确认镜像的上传并验证属性:

# openstack image list