admin用户可以用来创建domain,project,user。在keystone.conf中,通过设定admin_token,提供了一个初始的管理员令牌,假定为ADMIN,我们用这个令牌来创建admin用户。这是个管理的问题,如果分配给不同的人员,应该要使用不同的username/password。
配置环境变量
$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 user list
这是显示用户的命令,我们看到里面有三个参数,这三个参数几乎在所有的命令都需要设置。这会很烦的,可以设置环境变量来解决。
$ cat wei_env
export OS_TOKEN=ADMIN
export OS_URL=http://localhost:35357/v3
export OS_IDENTITY_API_VERSION=3
$ source wei_env
这样,前面的命令,就可以简化为$ openstack user list
为了更好地了解CLI,后面将不使用环境变量
创建role
管理员属于管理角色:admin,因此要创建管理员,首先要创建管理员角色。
$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 role create admin
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | 868b27db6a814d9eab31815574cd909f |
| name | admin |
+-----------+----------------------------------+
查看角色:
$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 role list
+----------------------------------+-------+
| ID | Name |
+----------------------------------+-------+
| 868b27db6a814d9eab31815574cd909f | admin |
+----------------------------------+-------+
我们还可以进入数据库看看:
mysql> select * from role;
+----------------------------------+-------+-------+-----------+
| id | name | extra | domain_id |
+----------------------------------+-------+-------+-----------+
| 868b27db6a814d9eab31815574cd909f | admin | {} | <<null>> |
+----------------------------------+-------+-------+-----------+
1 row in set (0.00 sec)
创建用户
在keystone中,用户是有归属的。关系为domain --》 project --》user。一个domain包含多个projects,一个projects可包含多个用户,反过来,一个用户可以归属不同的projects,在V2.0,没有domain,只有project(tenant),在v3中增加了一层关系。在创建一个用户之前,我们先要创建归属的domain和project。
1、创建domain
$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 domain create --description "Administrators Domain" admin-domain
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Administrators Domain |
| enabled | True |
| id | 13b6ce90f57844e3bfec0eeb0389104e |
| name | admin-domain |
+-------------+----------------------------------+
2、创建project
$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 project create --domain admin-domain --description "Admin project" admin-project
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Admin project |
| domain_id | 13b6ce90f57844e3bfec0eeb0389104e |
| enabled | True |
| id | 5b5893ebc8ca42abaaa18dca873a6921 |
| is_domain | False |
| name | admin-project |
| parent_id | 13b6ce90f57844e3bfec0eeb0389104e |
+-------------+----------------------------------+
3、创建user
设定密码为admin123
$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 user create --domain admin-domain --password-prompt adminUser
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | 13b6ce90f57844e3bfec0eeb0389104e |
| enabled | True |
| id | 4f63af5f7a6b42088289013ae109830b |
| name | adminUser |
+-----------+----------------------------------+
注意:不要在此关联--project,在确定role的时候再进行关联。
4、赋予用户admin的角色
$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 role add --project admin-project --user adminUser admin
我们验证一下结果,curl是个很有用的linux命令
$ curl -H "X-Auth-Token:ADMIN" -H "Content-type: application/json" http://localhost:35357/v3/projects/5b5893ebc8ca42abaaa18dca873a6921/users/4f63af5f7a6b42088289013ae109830b/roles | python -mjson.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 345 100 345 0 0 3559 0 --:--:-- --:--:-- --:--:-- 3593
{
"links": {
"next": null,
"previous": null,
"self": "http://localhost:35357/v3/projects/5b5893ebc8ca42abaaa18dca873a6921/users/4f63af5f7a6b42088289013ae109830b/roles"
},
"roles": [
{
"domain_id": null,
"id": "868b27db6a814d9eab31815574cd909f",
"links": {
"self": "http://localhost:35357/v3/roles/868b27db6a814d9eab31815574cd909f"
},
"name": "admin"
}
]
}
使用用户名和密码来进行操作
$ openstack --os-username=adminUser --os-password=admin123 --os-url=http://localhost:35357/v3 --os-identity-api-version=3 user list
+----------------------------------+-----------+
| ID | Name |
+----------------------------------+-----------+
| 4f63af5f7a6b42088289013ae109830b | adminUser |
+----------------------------------+-----------+
这是本地命令方式,远程的RESTful接口,需要先通过账号密码获取TOKEN,然后通过TOKEN来进行操作,过程和在后面介绍。
禁止原初始token
在keystone.conf中注释掉原来的初始token,重启服务,则只能通过账号和密码访问。