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,后面将不使用环境变量
管理员属于管理角色: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。
$ 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 | +-------------+----------------------------------+
$ 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 | +-------------+----------------------------------+
设定密码为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的时候再进行关联。
$ 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来进行操作,过程和在后面介绍。
在keystone.conf中注释掉原来的初始token,重启服务,则只能通过账号和密码访问。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow