KeyStone安装部署笔记,keystone部署笔记


OpenStack中的所有组件称为服务,比如keystone、swift、nova等,不同的服务负责不同的功能,swift负责存储数据对象,nova管理计算实例的生命周期,keystone为其它服务提供认证和授权等,而有些服务是属于共享范畴的,比如Keystone,为OpenStack中的所有其它服务管理者endpoint的目录,并负责认证和授权。可以简单地理解为访问OpenStack中所有服务的请求都需要通过keystone的认证和授权,可以将Keystone比喻为一座城池大门的守卫者,进入其中的访客都需要经过守卫者的检查,认可了才可以进入其中。当然仅仅将keystoneb比喻为守卫者显然降低了Keystone的功能职责,更加系统的概括Keystone职责为:身份服务中的主要概念如下:本文的安装是在64位CentOS7.1中完成的,使用的数据库是MariaDB。在OpenStack中大部分服务都使用SQL数据库存储信息,所以在安装之前假设已经成功安装了数据库,比如MySQL。按照下面的步骤在数据库中创建身份服务相关的数据库和用户:完成数据库的操作后,生成初始化配置Keystone的管理员令牌(随机数):openssl rand -hex 10 (2606fd07fe3797661dbe),括号中的字符串为令牌,一定要保存下来,后面的操作会使用该字符串。然后使用下面的命令安装Keystone服务和Keystone客户端,并会安装相关的依赖包:yum install openstack-keystone python-keystoneclient。根据不同的环境,该过程的持续时间会有差异,总体来说还是比较快的,该过程会将Keystone安装到Python的site-packages目录下。完成安装后按照下面的步骤修改/etc/keystone/keystone.conf文件:接下来生成通用证书和key,并设置相关文件的访问权限:chown -R keystone:keystone /var/log/keystone
chown -R keystone:keystone /etc/keystone/ssl
chmod -R o-rwx /etc/keystone/ssl使用下面的命令向keystone数据库填充数据:su -s /bin/sh -c "keystone-manage db_sync" keystone,该语句执行完毕后可以在数据库中发现相关的数据表。然后使用下面的命令启动keystone服务:systemctl start openstack-keystone.service,服务启动后就可以使用keystone客户端创建租户、用户、角色、服务和endpoint了。命令分别为:
keystone --os-token 2606fd07fe3797661dbe --os-endpoint http://localhost:35357/v2.0 tenant-create --name admin --description "Admin Tenant"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |           Admin Tenant           |
|   enabled   |               True               |
|      id     | 2bee31cc468f402e9a784cc0a3b8d477 |
|     name    |              admin               |
+-------------+----------------------------------+
keystone --os-token 2606fd07fe3797661dbe --os-endpoint http://localhost:35357/v2.0 user-create --name admin --pass 123456
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |                                  |
| enabled  |               True               |
|    id    | 0f521003d766433aa4da106d4d0187d5 |
|   name   |              admin               |
| username |              admin               |
+----------+----------------------------------+
keystone --os-token 2606fd07fe3797661dbe --os-endpoint http://localhost:35357/v2.0 role-create --name admin
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|    id    | 4e1061f6a0b8411f97150c4f02a5b172 |
|   name   |              admin               |
+----------+----------------------------------+	

参数--os-token的字符串即为前面步骤生成的随机字符串。然后将角色admin添加到租户和用户中:

keystone --os-token 2606fd07fe3797661dbe --os-endpoint http://localhost:35357/v2.0 user-role-add --user admin --role admin --tenant admin
在创建完了租户、用户和角色后,就需要为身份服务创建服务实体和endpoint。身份服务管理OpenStack环境汇中的服务目录,服务使用该目录定位环境中的其它服务,使用下面的命令为身份服务创建服务实体:

keystone --os-token 2606fd07fe3797661dbe --os-endpoint http://localhost:35357/v2.0 service-create  --name keystone --type identity
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |                                  |
|   enabled   |               True               |
|      id     | 4b739b0632554c1ba27d4e7ff8a87a10 |
|     name    |             keystone             |
|     type    |             identity             |
+-------------+----------------------------------+
身份服务管理者与服务相关联的API端点的目录,服务使用该目录确定如何与其它服务通信,OpenStack为每个服务提供了三种API端点:admin、internal和public。在生产环境中,出于安全的原因,不同的网络服务于不同类型的用户,而三种不同的API端点则依赖于这样的网络。OpenStack出于扩展性的考虑也支持多个region。下面的命令在regionOne创建了keystone的三种端点:

keystone --os-token 2606fd07fe3797661dbe --os-endpoint http://localhost:35357/v2.0 endpoint-create --service keystone --region regionOne --publicurl http://localhost:5000/v2.0 --internalurl http://localhost:5000/v2.0 --adminurl http://localhost:35357/v2.0
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
|   adminurl  |   http://localhost:35357/v2.0    |
|      id     | f54874cdbb8d4e2991ab38469813cc31 |
| internalurl |    http://localhost:5000/v2.0    |
|  publicurl  |    http://localhost:5000/v2.0    |
|    region   |            regionOne             |
|  service_id | 4b739b0632554c1ba27d4e7ff8a87a10 |
为admin租户和用户申请令牌:

keystone --os-tenant-name admin --os-username admin --os-password 123456 --os-auth-url http://localhost:35357/v2.0 tenant-list
+----------------------------------+---------+---------+
|                id                |   name  | enabled |
+----------------------------------+---------+---------+
| 2bee31cc468f402e9a784cc0a3b8d477 |  admin  |   True  |
| 73ab99661bd34a32b032cc6e04399b67 |   demo  |   True  |
| 2835009c452b4d408f95ff5a920fc877 | service |   True  |
+----------------------------------+---------+---------+
最后验证admin租户和用户:
keystone --os-tenant-name admin --os-username admin --os-password 123456 --os-auth-url http://localhost:35357/v2.0 tenant-list
+----------------------------------+---------+---------+
|                id                |   name  | enabled |
+----------------------------------+---------+---------+
| 2bee31cc468f402e9a784cc0a3b8d477 |  admin  |   True  |
| 73ab99661bd34a32b032cc6e04399b67 |   demo  |   True  |
| 2835009c452b4d408f95ff5a920fc877 | service |   True  |
+----------------------------------+---------+---------+
输出结果验证了身份服务工作正常,Keystone安装部署成功。在上面步骤中,每次都要输入冗长的命令,这样的操作增加了出错的可能性,幸好OpenStack支持将参数或者选项以环境变量的形式保存在称为OpenRC的文件中。通常这样的文件为所有的客户端,比如keystone、swift,保存了通用选项,但也支持特定于客户端的选项。下面为admin和demo创建相应的OpenRC文件(其实就是保存环境变量的脚本):
admin-openrc.sh和demo-openrc.sh(其实就是保存环境变量的脚本):
export OS_TENANT_NAME=admin
export OS_UESERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://localhost:35357/v2.0
在执行keystone命令之前,先执行source admin-openrc.sh使环境变量生效,然后就不用输入冗长的参数了。这篇文章概括了Keystone的安装和配置,并简要描述了相关的概念,显然并未涉及Keystone的核心功能,而这需要进一步学习相关资料,并实践。


相关内容