安装OpenStack(openSUSE) Step by Step - Identity (Keystone)
上一篇:安装OpenStack(openSUSE) Step by Step - Get Started
OpenStack Identity Service - Keystone
跟随OpenStack Installation Guide for Ubuntu 12.04的节奏,首先遇到了Keystone。简单地说,它是一个认证系统,主要包含两个功能:
- 用户管理:管理不同虚拟帐号可执行操作的权限
- 服务目录:记录不同服务相关的配置,比如服务API节点信息等
相关名词:
名称 | 定义 |
---|---|
User | 使用OpenStack云服务的用户、系统或者服务的唯一标识,作为Keystone验证过程的发起人。 |
Credentials | 证书。User用于验证自己身份的凭证。可通过的验证包括:匹配的用户名与密码、匹配的用户名与API Key、唯一可代表User的特殊令牌等。 |
Authentication | 验证过程。验证User的请求是否可信,并将结果报告给User所请求的服务。 |
Token | 令牌,是一串特殊的字符。User通过验证过程将获得相应资源的令牌。令牌是唯一的,只包含一种资源的使用许可,并且令牌可以随时撤销,具有有效期。 |
Tenant | 租赁空间1。定义这一种容器,主要用于对不同资源、标识进行分组。根据不同的情景,租赁空间可以是客户、帐号、组织或者项目。 |
Service | OpenStack的服务,如计算(Nova)、对象存储(Swift)、镜像(Glance)等。服务提供一个或多个节点(Endpoint)用于User接入并使用相应的资源。 |
Endpoint | 网络的可接入节点,通常由url描述一个服务的接入地址。 |
Role | 描述User的角色,例如管理员admin、服务service、普通用户user等,便于管理不同User对资源可操作的权限。 |
每一个服务的User策略都以JSON形式保存在/etc/服务CodeName/policy.json
文件中,例如计算服务(Nova)的User策略保存在/etc/nova/policy.json
。 默认的policy.json
只包含管理员角色(admin role)相关的策略,在一个租赁空间中所有不需要管理员角色的相关操作,其执行权限将赋予所有普通用户。
具体内容可参见参考文档。
安装Keystone
根据上一篇,可以添加最新的Master源(Grizzly Release)。然后直接安装二进制包
配置Keystone
不使用SQLite作为数据库,改用MySQL。
删除SQLite的文件2
配置MySQL
- 新建Keystone数据库
- 配置keystone数据库权限
设置keystone服务将以keystone用户的身份访问keystone数据库。另外,别忘了密码。
默认情况下,MySQL不允许本地的其他用户接入数据库,因此需要第二条覆盖这一规则。(或许笔者理解的不对?)
修改配置文件
首先,修改数据库接入信息
1
connection = mysql://keystone:[keystone数据库的密码]@localhost/keystone
设置服务目录保存在数据库中,不使用模板方式2
1 2 3 4
[catalog] driver = keystone.catalog.backends.sql.Catalog # driver = keystone.catalog.backends.templated.TemplatedCatalog # template_file = default_catalog.templates
设置管理员令牌
1
admin_token = tokentoken
配置SSL
Keystone默认使用SSL加密,初始化并重启服务
初始化数据库
配置Service相关的Tenant、User、Role
这里,我们需要配置一些用户(比如,admin、service等),以及他们各自的角色,以便于Keystone与其他服务之间进行协作。
建议使用这个脚本进行快速部署,如果需要学习,可以手动进行添加配置等。详情参见OpenStack Installation Guide for Ubuntu 12.04,二者略有出入。
成功后会输出所有的配置结果,配置模板参照OpenStack Installation Guide for Ubuntu 12.04中手动配置过程。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
+-------------+---------------------------------------+
| Property | Value |
+-------------+---------------------------------------+
| adminurl | http://localhost:$(admin_port)s/v2.0 |
| id | 35acf97a47724c94bc762cb22a63b121 |
| internalurl | http://localhost:$(public_port)s/v2.0 |
| publicurl | http://localhost:$(public_port)s/v2.0 |
| region | RegionOne |
| service_id | b8e45e64bef046949ff29d3d00a496be |
+-------------+---------------------------------------+
+-------------+------------------------------------------------------+
| Property | Value |
+-------------+------------------------------------------------------+
| adminurl | http://localhost:$(compute_port)s/v1.1/$(tenant_id)s |
| id | 95b9983ebd7b4eac96eb5c3971446d88 |
| internalurl | http://localhost:$(compute_port)s/v1.1/$(tenant_id)s |
| publicurl | http://localhost:$(compute_port)s/v1.1/$(tenant_id)s |
| region | RegionOne |
| service_id | ac27f2a0af1c4dbe92fed482efef7a7f |
+-------------+------------------------------------------------------+
+-------------+----------------------------------------+
| Property | Value |
+-------------+----------------------------------------+
| adminurl | http://localhost:8776/v1/$(tenant_id)s |
| id | 74e2d4c2a6c244a6800f9a4a89607a4a |
| internalurl | http://localhost:8776/v1/$(tenant_id)s |
| publicurl | http://localhost:8776/v1/$(tenant_id)s |
| region | RegionOne |
| service_id | 68e394478fd2436aaadf23e7a34ff3e4 |
+-------------+----------------------------------------+
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| adminurl | http://localhost:9292 |
| id | aad3f0d99e374d7a91125349db1f5400 |
| internalurl | http://localhost:9292 |
| publicurl | http://localhost:9292 |
| region | RegionOne |
| service_id | ecf011207e5340939e3117528701984d |
+-------------+----------------------------------+
+-------------+--------------------------------------+
| Property | Value |
+-------------+--------------------------------------+
| adminurl | http://localhost:8773/services/Admin |
| id | fea1ea08e0db409bb5ddc95a9926728c |
| internalurl | http://localhost:8773/services/Cloud |
| publicurl | http://localhost:8773/services/Cloud |
| region | RegionOne |
| service_id | ce45f1b85dc148bd823037f207096c9a |
+-------------+--------------------------------------+
+-------------+---------------------------------------------+
| Property | Value |
+-------------+---------------------------------------------+
| adminurl | http://localhost:8888/v1 |
| id | f72641685aea41469e458192bd7bc840 |
| internalurl | http://localhost:8888/v1/AUTH_$(tenant_id)s |
| publicurl | http://localhost:8888/v1/AUTH_$(tenant_id)s |
| region | RegionOne |
| service_id | fc0fb855a4824a05ae09c0f241974f32 |
+-------------+---------------------------------------------+
验证安装
成功时会返回token相关信息,如user_id、expires、id等,如果信息太多,可能你已经看不出来它是一个表格了。但表格形式如上文:)
1
2
3
4
5
6
7
+-------------+---------------------------------------------+
| Property | Value |
+-------------+---------------------------------------------+
| expires | 2013-06-18T09:29:35Z |
| id | MIICbgYJKoZIhvcNAQcCoIICXzC... |
| user_id | 5c2d379b09d54c9588ccb8a13fe9b6bc |
+-------------+---------------------------------------------+
同样地,验证其它User的权限
参考文档
OpenStack Installation Guide for Ubuntu 12.04