openstack之user篇
来源:互联网 发布:微信养号软件 编辑:程序博客网 时间:2024/06/06 05:03
一、user简介
Openstack为管理员提供了一个管理页面,用户只要用自己的用户名和密码登录后,就可以进行一系列的操作,包括上传image, 创建instance等,如果是admin用户,还可以对用户、project(tenant)等操作。至于管理员的账户,需要有相关供应商(如果有的话)或openstack环境搭建者提供。在SUSE CLOUD1.0中,由于我们用Crowbar作为openstack环境的搭建工具,所以admin用户的信息是通过admin node节点的相关配置提供的,配置文件位于 /opt/dell/chef/data_bags/crowbar/bc-template-keyston.json,在JS[attributes][admin]中定义了admin用户的相关信息:name,project name和password。
要新创建一个用户,必须给这个用户指定一个project. Project又称为tenant,可以看做定义了一组特定资源的组合,只要定义了一个属于这个project的用户,则该用户就能够使用这个project定义的一组资源。用户和project是多对多的关系,一个project包括许多用户,一个用户也可以属于不同的project。
只有用户admin(超级用户)才能够参与user的管理,例如用户的添加,删除,密码修改等(这可以认为是openstack branch/essex的一个bug,一个普通用户应该能够对自己进行编辑,估计这个问题在openstack的新版本上能够得到解决)。
二、user 命令
关于user的基本命令有:user-list, user-get, user-create, user-delete ... 相关用法可以参考相关的api介绍, 也可通过
# keystone help 获得帮助。
下面用user-list为例介绍其使用方法。
管理用户取得用户列表命令为user-list。
# keystone --os-username admin --os-passowrd password --os-tenant-name admin user-list
可以看到为了取得用户列表,需要提供超级用户名(admin,根据你的环境,下同),密码(password),project名(admin)。keystoneclient在接收到命令后,会为该用户生成一个token, 然后根据这个token完成命令的相关操作。在所有的serviceclient(sed 's/service/[keystone, glance, nova, ...]')中,都需要通过token来完成相关操作。
在linux终端为了使用方便,可以定义一系列环境变量来简化相关操作的输入。
定义环境变量:
# export OS_USERNAME=admin
# export OS_PASSWORD=password
# export OS_TENANT_NAME=admin
# export OS_AUTH_URL=""http://127.0.0.1:5000/v2.0/
这样就大大简化命令行输入代码:
# keystone user-list
三、user api
openstack所有的命令都是通过WSGI进行扩展,用http请求来完成。用户PUT/POST请求数据给相应的nova endpoint, nova处理请求,reponse相关的数据。请求数据通常包装成json格式,也可以是XML格式。
在openstack.org/api介绍中,user list的请求格式定义为:
...
+-------------+------------------------------------------------------------------+
| keystone | Value |
+-------------+------------------------------------------------------------------+
| adminURL | http://d52-54-01-77-77-71.virtual.cloud.suse.de:35357/v2.0 |
| internalURL | http://d52-54-01-77-77-71.virtual.cloud.suse.de:5000/v2.0 |
| publicURL | http://public.d52-54-01-77-77-71.virtual.cloud.suse.de:5000/v2.0 |
| region | RegionOne |
+-------------+------------------------------------------------------------------+
...
URI: http://d52-54-01-77-77-71.virtual.cloud.suse.de:35357/v2.0/users.
关于user token,可以用以下命令获得:
curl -X POST http://localhost:5000/v2.0/tokens -d '{"auth":{"passwordCredentials":{"username": "admin", "password":"crowbar"}}}' -H "Content-type: application/json"
也可以用代码的方式获得。
有了URI 和user token,我们就可以通过http请求取得user list了。
python代码:
import httplib2
req_url = "http://d52-54-01-77-77-71.virtual.cloud.suse.de:35357/v2.0/users"
method = "GET"
http_obj = httplib2.Http()
headers = {}
headers['X-Auth-Token'] = "95cf83d589eb4654b4ae7ee26c747338"
resp, resp_body = http_obj.request(req_url, method,
headers=headers, body=None)
print resp_body
输出结果:
{"users": [{"tenant_id": "4e14ab2a2df045f1a6f02081a46deb2c", "enabled": "True", "id": "ce205b61760c463cb46e41909de8495f", "name": "admin"}, {"tenant_id": "82a50c8ca24e4fb4893b922867936a1b", "enabled": "True", "id": "93183a88bd3f400595d76d97de240b21", "name": "crowbar"}, {"tenant_id": "79741744708840888d51532920f0bdc4", "enabled": "True", "id": "1a739ace53054437a2b207100c9f2a39", "name": "glance"}, {"tenant_id": "79741744708840888d51532920f0bdc4", "enabled": "True", "id": "dc906b9e8cc64456bb962ac41557a972", "name": "nova"}, {"name": "demo", "enabled": true, "email": null, "id": "cc1eb14d33144bd08aeef821f972c887", "tenantId": "723f3c3b4bb64af382470e9254372af2"}, {"name": "test", "enabled": true, "email": null, "id": "446460140f6f4ed1a97e0964cf56959c", "tenantId": "4e14ab2a2df045f1a6f02081a46deb2c"}, {"name": "testuser", "enabled": true, "email": null, "id": "c61ef7c83f8f4a999021fccf73be1345", "tenantId": "c4c4c1ba590740d8b1b783aa61d32aed"}]}
可以看到,所有用户的信息已经通过http访问方式以json格式列了出来。
- openstack之user篇
- openstack user case.
- openstack之简介篇
- openstack之tenant篇
- openstack之glance篇
- openstack之role篇
- openstack学习之概念篇
- openstack学习之概念篇
- openstack Horizon的user/project/role/group
- openstack学习之白话Openstack
- openstack学习之白话Openstack
- OpenStack实践之旅:安装配置篇
- xtraReport使用之End User篇
- xtraReport使用之End User篇二
- MySQL权限篇之CREATE USER
- [问题篇]VMWare搭建Openstack——执行自动化Linux Shell 创建Admin Tenant User报错
- OpenStack学习笔记之--OpenStack Nova 架构
- 【OpenStack】Openstack之Cinder服务初探
- Java集合类详解
- 从DLL生成LIB
- 云存储——Uploaded网盘
- The Zen of Python
- rmmod chdir no such file or directory
- openstack之user篇
- 在Visual C++ 中调用Excel 2000
- 深入理解Java内存模型(一)——基础
- Syntax error on token "run", Identifier expected after this token错误
- 【K短路】【A星】Remmarguts' Date POJ 2449 A-Star
- 总结自己
- linux爱好者之基础篇--文件相关命令
- 线段树区间染色 浮水法 学习小记 Poj 2777 + Poj 2528
- java 字符串写入文件