对于openstack的api操作来说,大量的命令都依赖相关用户的token来完成,尤其对自动化测试来说,可以说拿到了用户的token就相当于取得了进入openstack这个大工厂大门的钥匙,有了这个钥匙,才能进入这个工厂大显身手。
要想拿到token, 必须知道用户的相关信息,其中用户名和密码是必须的,如果还想取得更多的信息,例如用户对各种服务包括glance, keystond的访问endpoint, 还需要提供用户的tenant信息。实际上,对于终端用户来说,因为用户名,密码以及tenant名更为直观,所以很少会直接用token进行操作,但对于自动化测试来说,因为要直接和相关api打交道,取得token就相当有必要了。
命令行取得用户token的命令为:
# curl -X POST http://localhost:5000/v2.0/tokens -d '{"auth":{"passwordCredentials":{"username": "username", "password":"password"}}}' -H "Content-type: application/json"
其中localhost:5000是openstack keystone服务的endpoint, 如果没有特殊的设置,5000就是keystone服务进程的端口号。
/v2.0/token 是openstack api里定义的取得token的URI, 请求方式为POST,这个可以从openstack.org里查到。
后面json结构的数据‘auth’是提供给keystone服务用户信息,包括用户名和密码。下面看一