1、keystone服务概述
OpenStack身份服务为管理身份验证,授权和服务目录提供了单点集成。<br />身份服务通常是用户与之交互的第一项服务。身份验证后,最终用户可以使用其身份访问其他OpenStack服务。同样,其他OpenStack服务也利用身份服务来确保用户是他们所说的人,并发现其他服务在部署中的位置。身份服务还可以与某些外部用户管理系统(例如LDAP)集成。<br /> 用户和服务可以使用由身份服务管理的服务目录来查找其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以具有一个或多个端点,并且每个端点可以是三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同的终结点类型可能驻留在暴露给不同类型用户的单独网络上。例如,公共API网络可能在Internet上可见,因此客户可以管理其云。admin API网络可能仅限于管理云基础架构的组织内的运营商。内部API网络可能仅限于包含OpenStack服务的主机。此外,OpenStack支持多个区域以实现可伸缩性。`RegionOne`地区。在身份服务中创建的区域,服务和端点共同构成了部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中存储相应的端点。这可以在安装和配置了身份服务之后完成。<br />身份服务包含以下组件:<br />**Server**<br /> 集中式服务器使用RESTful接口提供身份验证和授权服务。<br />**Drivers**<br /> 驱动程序或服务后端已集成到集中式服务器。它们用于访问OpenStack外部存储库中的身份信息,并且可能已经存在于部署OpenStack的基础架构中(例如,SQL数据库或LDAP服务器)。<br />**Modules**<br /> 中间件模块在使用身份服务的OpenStack组件的地址空间中运行。这些模块拦截服务请求,提取用户凭据,然后将它们发送到集中式服务器进行授权。中间件模块和OpenStack组件之间的集成使用Python Web服务器网关接口。<br />官方文档:[https://docs.openstack.org/keystone/pike/install/index-rdo.html](https://docs.openstack.org/keystone/pike/install/index-rdo.html)
2、安装keystone
1)配置OpenStack数据库
配置数据库信息:
(1)用数据库连接客户端以root用户连接到数据库服务器,输入数据库root账户的密码000000
[root@controller ~]# mysql -u root -p
(2)创建 keystone 数据库:
MariaDB [(none)]> CREATE DATABASE keystone;
(3)对“keystone”数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON keystone. TO ‘keystone’@’localhost’ \
IDENTIFIED BY ‘000000’;
GRANT ALL PRIVILEGES ON keystone. TO ‘keystone’@’%’ \
IDENTIFIED BY ‘000000’;
(4)退出数据库客户端。
MariaDB [(none)]> quit;
Bye
2)安装和配置OpenStack认证服务
安装和配置组件:
(1)安装数据包
[root@controller ~]#yum install openstack-keystone httpd modwsgi
(2)编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
备份:cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak
去注释:grep -Ev ‘^$|#’ /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf_
root@controller:/# vim /etc/keystone/keystone.conf
●在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://keystone:000000@controller/keystone
●在[token]部分,配置Fernet UUID令牌的提供者。
[token]
provider = fernet
(3)初始化身份认证服务的数据库:
su -s /bin/sh -c “keystone-manage db_sync” keystone
(4)初始化Fernet keys:
root@controller:/#keystone-manage fernet_setup —keystone-user keystone —keystone-group keystone
root@controller:/# keystone-manage credential_setup —keystone-user keystone —keystone-group keystone
root@controller:/# keystone-manage bootstrap —bootstrap-password 000000 \
—bootstrap-admin-url http://controller:5000/v3/ \
—bootstrap-internal-url http://controller:5000/v3/ \
—bootstrap-public-url http://controller:5000/v3/ \
—bootstrap-region-id RegionOne
(6)配置Apache参数
编辑/etc/httpd/conf/httpd.conf
文件并配置 将ServerName
选项配置为控制器节点:
[root@controller ~]# vi /etc/httpd/conf/httpd.conf
ServerName controller
创建指向/usr/share/keystone/wsgi-keystone.conf
文件的链接:
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
(7)完成后重启apache2
systemctl enable httpd.service
systemctl start httpd.service
systemctl status httpd.service
3、设置环境变量
(1)管理员环境变量设置
#cd /
#mkdir openrc
#vi /openrc/adminopenrc
输入以下内容:
_export OS_USERNAME=admin
export OS_PASSWORD=000000
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
(2)配置demo账号运行环境参数
#vi /openrc/demo_openrc
输入以下内容:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=000000
ExportOS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
4、创建域(domains)、项目(projects)、 用户(users)和角色(roles)
1、运行管理员认证脚本
root@controller:/openrc#. admin_openrc
2、创建service(服务)项目
# openstack project create —domain default —description “Service Project” service
3、创建demo项目
有时需要非特权用户进行实验,测试等工作,采用demo用户登录,如果不进行demo测试,下面关于demo部分命令可以不创建执行。下面创建demo项目实现。
(1)创建demo项目
命令如下:
$ openstack project create —domain default —description “Demo Project” demo
(2)添加demo用户
$ openstack user create —domain default —password-prompt demo
5、验证
1、重置“OS_TOKEN”和“OS_URL”环境变量
$ unset OS_TOKEN OS_URL
2、设置admin用户,请求需要认证令牌
$ openstack —os-auth-url http://controller:35357/v3
—os-project-domain-name Default —os-user-domain-name Default \
—os-project-name admin —os-username admin token issue
3、设置demo用户,请求需要认证令牌
$ openstack—os-auth-urlhttp://controller:5000/v3 \
—os-project-domain-name Default —os-user-domain-name Default \
—os-project-name demo —os-username demo token issue