您的位置:首页 > 运维架构

一步一步跟着官方文档安装部署Openstack(icehouse)二

2015-07-01 23:44 597 查看
继安装部署OpenStack(一)

三、配置身份识别服务(keystone)控制节点
身份识别服务执行以下功能:
用户管理,追踪用户和他们的权限
作为其他服务的目录,提供了一个可用服务和他们API端点的目录

为了明白身份识别服务,你要明白以下的概念:
用户(User) 一串数字代表使用openstackyun服务的人、系统、服务,身份识别服务验证用户进来的请求,通过之后,会分配其令牌,用户可以凭借令牌访问他所在的容器
证明材料(Credentials) 在身份识别中的用户名、密码或者令牌

验证 (Authentication) 验证用户的一个动作
令牌 (Token) 用来访问资源的一串任意文本

容器 (Tenant) 一个用来隔离资源或对象的容器
服务(Service) 一个openstack的服务,例如计算服务(nova),对象存储服务(swift),镜像服务(glance)等等。

端点 (Endpoint ) 一个网络访问地址,通常叫做URL,用来访问服务的地址
角色 (Role) 一个角色是一些权限的一个集合,赋予一个用户这个角色,这个用户就有了角色里面的权限

安装身份识别服务(keystone)
在控制节点安装
# yum install openstack-keystone python-keystoneclient
#修改配置文件中的mysql连接
# openstack-config --set /etc/keystone/keystone.conf \
database connection mysql://keystone:KEYSTONE_DBPASS@controller keystone
注:KEYSTONE_DBPASS修改为你的身份验证服务密码,这个命令也可以如下操作
#或

#vim  /etc/keystone/keystone.conf  修改
database connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone
上面的参数指定连接时,其语法格式为“mysql://[user]:[pass]@[primary IP]/[db name]”。

以下命令都采用openstack-config的方式修改配置文件,大家理解即可!



使用root登陆mysql,创建数据库,赋予keystone用户相关权限
$ mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> exit
为keystone创建表
su -s /bin/sh -c "keystone-manage db_sync" keystone
注意:这里可能会报警告信息,但是不是错误,大家忽略即可。(因为默认是debug级别)
定义一个验证的令牌,以供keystone和其他服务使用
# ADMIN_TOKEN=$(openssl rand -hex 10)
# echo $ADMIN_TOKEN
# openstack-config --set /etc/keystone/keystone.conf DEFAULT \
admin_token $ADMIN_TOKEN
默认情况下,keystone使用PKI 令牌,所以创建签名和证书
# keystone-manage pki_setup --keystone-user keystone --keystone-group
keystone
# chown -R keystone:keystone /etc/keystone/ssl
# chmod -R o-rwx /etc/keystone/ssl
启动keystone服务,加入启动列表
# service openstack-keystone start
# chkconfig openstack-keystone on


定义用户,容器,角色
定义环境变量

$ export OS_SERVICE_TOKEN=ADMIN_TOKEN
$ export OS_SERVICE_ENDPOINT= http://controller:35357/v2.0[/code]注:ADMIN_TOKEN就是上面生成的随机数字 创建admin用户
$ keystone user-create --name=admin --pass=ADMIN_PASS --email=ADMIN_EMAIL
修改密码和邮箱
创建admin角色
$ keystone role-create --name=admin
创建admin容器
$ keystone tenant-create --name=admin --description="Admin Tenant"
赋予admin用户admin角色和admin容器
$ keystone user-role-add --user=admin --tenant=admin --role=admin
系统默认有_member_角色,赋予admin
$keystone user-role-add --user=admin --role=_member_ --tenant=admin
创建一个demo用户,demo角色,demo容器,方法同上
创建一个service容器,用来承载其他的openstack服务,每个openstack服务,都需要用户,角色,容器来访问其他的服务的,但是容器可以共享,这里共享一个service 容器,用户和角色可以在后面创建服务的时候建立。
$ keystone tenant-create --name=service --description="Service Tenant"
创建好之后查看下
# keystone user-list
+----------------------------------+--------+---------+------------------+
|                id                |  name  | enabled |      email       |
+----------------------------------+--------+---------+------------------+
| 2ff603a4178e449c9517be5ee33eebc3 | admin  |   True  |  root@localhost  |
| e725d18231f646fbb30a5410f3f4024e |  demo  |   True  |  demo@localhost  |
| d8702a1bd0264dc7a55ffaebc0c3e58e | glance |   True  | glance@localhost |
| afd793ac961b47feb42ce799f69c6b08 |  nova  |   True  |  nova@localhost  |
+----------------------------------+--------+---------+------------------+
#keystone role-list
+----------------------------------+----------+
|                id                |   name   |
+----------------------------------+----------+
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
| bc312302997b468788ac91ae1faf9a5c |  admin   |
+----------------------------------+----------+
# keystone tenant-list
+----------------------------------+---------+---------+
|                id                |   name  | enabled |
+----------------------------------+---------+---------+
| dc42d1e0d4fd4661bab1c4b8b55aaea5 |  admin  |   True  |
| f3241e14bd6d4afebd4ef154f967b038 |   demo  |   True  |
| caee860fa57a4c44bafdeee2974148b1 | service |   True  |
+----------------------------------+---------+---------+


定义服务和API端点
在keystone中创建一个service条目
keystone service-create --name=keystone --type=identity \
--description="OpenStack Identity"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | OpenStack Identity |
| id | 15c11a23667e427e91bc31335b45f4bd |
| name | keystone |
| type | identity |
+-------------+----------------------------------+
为keystone服务添加API端点
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ identity / {print $2}') \   注:这里service-id可以用上面的查看命令获取之后粘贴过来
--publicurl=http://controller:5000/v2.0 \
--internalurl=http://controller:5000/v2.0 \
--adminurl=

+-------------+-----------------------------------+
| Property | Value |
+-------------+-----------------------------------+
| adminurl | http://controller:35357/v2.0 |
| id | 11f9c625a3b94a3f8e66bf4e5de2679f |
| internalurl | http://controller:5000/v2.0 |
| publicurl | http://controller:5000/v2.0 |
| region | regionOne |
| service_id | 15c11a23667e427e91bc31335b45f4bd |
+-------------+-----------------------------------+


验证keystone服务的安装
取消环境变量
$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
使用基于用户名,密码的验证
$ keystone --os-username=admin --os-password=ADMIN_PASS \
--os-auth-url=http://controller:35357/v2.0 token-get
当你看到有你的user id和令牌的时候,keystone服务运行正常
将变量保存到文件中,使用source是变量生效
vim admin-openrc.sh

export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_TENANT_NAME=admin
export OS_AUTH_URL=

$ source admin-openrc.sh
这样就可以直接使用keystone的命令,不在需要提供用户名,密码了
至此身份认证服务安装完成



本文出自 “Linux is belong to you” 博客,请务必保留此出处http://jwh5566.blog.51cto.com/7394620/1669922
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: