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的核心功能,而这需要进一步学习相关资料,并实践。