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