Openstack Keystone安装(二)
上一篇中我们已经将Keystone的组件安装在了计算机上。
本篇我们将会对Keystone进行一些基本配置和基本使用。
准备
接下来我们暂时不需要使用root账户了,返回普通用户继续下面的操作。
我们首先在home目录下建立一个方便我们未来使用命令行的文件。
touch ~/admin-openrc.sh
chmod +x ~/admin-openrc.sh
在其中添加下面的内容:
export OS_TOKEN=49f9e01220a3a7f0c41e
export OS_URL=http://10.20.0.2:35357/v3
export OS_IDENTITY_API_VERSION=3
这里需要把TOKEN换成上一步我们生成的那个随机值。
然后保存退出,接下来运行:
. ~/admin-openrc.sh
这样这些环境变量就被导入到当前环境了。
建立服务实体和API终结点
1) 首先通过下面的命令来生成一个服务实体
openstack service create --name keystone --description \"OpenStack Identity\" identity
2) 下面我们来建立三个API终结点(Endpoint)
为什么要建三个呢,因为Openstack的API Endpoint有三种类型:public、internal和admin。
注意它们的区别,public的url使用Public IP,另外两种使用Management IP。并且admin使用35357端口,另外两种使用5000端口。
openstack endpoint create --region RegionOne identity public http://192.168.203.100:5000/v2.0
openstack endpoint create --region RegionOne identity internal http://10.20.0.2:5000/v2.0
openstack endpoint create --region RegionOne identity admin http://10.20.0.2:35357/v2.0
建立项目、用户和角色
1) 首先建立一个管理员项目以及管理员用户来进行环境设置。
我们简单的使用default这个domain。
建立admin项目
openstack project create --domain default --description \"Admin Project\" admin
接下来我们建立admin用户和admin role
openstack user create --domain default --password-prompt admin
openstack role create admin
建立过程中会要求输入密码,记住这个密码哦。
然后我们把project admin和用户admin添加进admin角色
openstack role add --project admin --user admin admin
注意:上面这个命令是没有任何输出的。
我们创建一个service project给下面的服务用:
openstack project create --domain default --description \"Service Project\" service
之后,你可以重复上面类似的过程来创建更多需要的项目、用户和角色。
2) 验证用户
我们来检查下用户设置。首先去掉我们上面导入到环境变量中的OS_TOKEN和OS_URL
unset OS_TOKEN OS_URL
然后用下面的命令尝试登录:
openstack --os-auth-url http://10.20.0.2:35357/v3 \\
--os-project-domain-id default --os-user-domain-id default \\
--os-project-name admin --os-username admin --os-auth-type password \\
token issue
在输入密码后,如果登录成功,会打印出expires、id、project_id 和 user_id
创建Openstack客户端环境脚本
再次打开~/admin-openrc.sh
文件,将里面的内容替换为刚才建立的用户
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://10.20.0.2:35357/v3
export OS_IDENTITY_API_VERSION=3
同样是使用
. ~/admin-openrc.sh
命令来导入。
我们这次不像上面测试那样用那么参数来测试,直接用
openstack token issue
和前面同样打印出了结果即可。
完成安装
这样Keystone就安装完成了。
我们来建立个测试用户测试一下。
openstack project create --domain default --description \"Demo Project\" demo
openstack user create --domain default --password-prompt demo
openstack role create user
openstack role add --project demo --user demo user
这样我们就有了一个用户名为 demo ,身处 user 用户组的测试用户了。
来稍微使用一下吧
首先我们尝试用admin/123456这对用户名和密码登录。
我们需要登录成管理员模式,于是需要在scope里设置登录的scope为admin project
scope只有project或者domain两种,而且不可同时出现。这里我们domain固定为default就不存在换domain的问题了。
POST /v3/auth/tokens
Content-Type: application/json
{
"auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "admin",
"domain": {
"id": "default"
},
"password": "123456"
}
}
},
"scope": {
"project": {
"name": "admin",
"domain": {
"id": "default"
}
}
}
}
}
在响应的Header里会有
X-Subject-Token: 5d3122af4b8549e986ce1415d2d1940f
然后我们用这个Token继续请求
GET /v3/users
X-Auth-Token: 5d3122af4b8549e986ce1415d2d1940f
这里的X-Auth-Token
就是上一步获得的X-Subject-Token
这个响应如下:
1 | { |
很明显已经拿到了Admin权限。接下来可以为所欲为了。
顺便说一下,官方文档写的真是烂,我写这个“来稍微使用一下吧”这个段落居然花掉了我4个小时。
各种400、401、403。。。然后终于看到200 OK了。。。
光是推测json格式就很累。。。。
接下来的内容在:Openstack Swift安装(一)