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

继安装部署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的方式修改配置文件,大家理解即可!j_0028.gif


使用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

注: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的命令,不在需要提供用户名,密码了

至此身份认证服务安装完成j_0028.gif





你可能感兴趣的:(openstack,keystone,身份认证)