OpenStack-Q Keystone安装

一、Keystone概述

Keystone通常是用户与之交互的第一个服务。一旦经过身份验证,终端用户就可以使用他们的身份来访问其他OpenStack服务。同样地,其他OpenStack服务利用Keystone验证真假,并发现部署中其他服务的位置。Keystone还可以与一些外部用户管理系统(如LDAP)进行集成。

用户和服务可以通过使用由身份认证服务的service catalog来定位其他服务。顾名思义,service catalog是OpenStack部署中可用服务的集合。每个服务都可以有一个或多个端点,每个端点可以是以下三种类型之一:admin、internal或public。在生产环境中,由于安全原因,不同的端点类型可能位于不同的网络中。例如,Public API网络暴露在互联网上,这样客户就可以通过公共API管理云。Admin API网络可能仅限于管理云基础设施的组织中的操作人员。Internal API网络可能被限制在包含OpenStack服务的主机上。此外,OpenStack支持多个区域的可伸缩性。为简单起见,该指南使用了所有端点类型的管理网络和默认的区域RegionOne。在身份服务中创建的区域、服务和端点组成了一个service catalog。您的部署中的每个OpenStack服务都需要一个带有相应端点的服务条目,并存储在身份服务中。这可以在安装和配置身份服务之后完成。

身份服务包含以下组件:
Server
集中式服务器使用RESTful接口提供身份验证和授权服务。
Drivers
驱动程序或服务后端被集成到集中式服务器中。它们用于在OpenStack外部的存储库中访问身份信息,并且可能已经存在于OpenStack部署的基础设施中(例如,SQL数据库或LDAP服务器)。
Modules
中间件模块在使用身份认证服务的OpenStack组件的地址空间中运行。这些模块拦截服务请求,提取用户凭证,并将它们发送到集中式服务器以获得授权。中间件模块和OpenStack组件之间的集成使用Python Web Server Gateway接口。

二、安装Keystone组件

  1. 在安装和配置身份认证服务前,必须配置好数据库

(1)使用数据库访问客户端作为root用户连接到数据库服务器:
(2) 创建keystone数据库
(3)赋予keystone数据库本地与远程访问的权限

#  mysql -uroot -p123456

MariaDB [(none)]>  create database keystone;
MariaDB [(none)]>  grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456';
MariaDB [(none)]>  grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';

2.安装配置Keystone

# yum install -y openstack-keystone httpd mod_wsgi

编辑/etc/keystone/keystone.conf文件
# vi /etc/keystone/keystone.conf
在[database]位置,配置数据库连接
在[token]位置,配置提供的Fernet令牌

[database]
connection = mysql+pymysql://keystone:123456@controller/keystone
[token]
provider = fernet

同步Keystone数据库
# su -s /bin/sh -c "keystone-manage db_sync" keystone

初始化Fernet密钥存储库:
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

:引导身份认证服务 在Queens版本发布之前,keystone需要在两个独立的端口上运行,以适应the Identity v2 API,该API通常在35357端口上运行一个单独的admin-only服务。随着v2
API的移除,keystone可以在同一个端口上运行所有接口。

# keystone-manage bootstrap --cootstrap-password 123456 \
--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

3.配置Apache HTTP服务

编辑/etc/httpd/conf/httpd.conf文件,配置ServerName选项引用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/

4.关闭selinux

 # vi /etc/selinux/config
    SELINUX=disabled
    立即生效
    # setenforce 0  

5.完成安装

# systemctl enable httpd.service;systemctl start httpd.service

6.配置admin用户生成临时环境变量

# export OS_USERNAME=admin
# export OS_PASSWORD=123456
# export OS_PROJECT_NAME=admin
# export OS_USER_DOMAIN_NAME=Default
# export OS_PROJECT_DOMAIN_NAME=Default
# export OS_AUTH_URL=http://controller:35357/v3
# export OS_IDENTITY_API_VERSION=3

7.身份服务为每个OpenStack服务提供身份验证服务。身份验证服务使用domains、projects、users和roles的组合。
(1)创建域

# openstack domain create --description "Domain" example

(2)创建服务项目

# openstack project create --domain default --description "Service Project" service

(3)创建平台demo项目

# openstack project create --domain default --description "Demo project" demo

(4)创建demo用户

# openstack user create --domain default --password-prompt demo

(5)创建用户角色

# openstack role create user

(6)添加用户角色到demo项目和用户(无返回值)

# openstack role add --project demo --user demo user

:你可以重复这个过程来创建额外的项目和用户。

8.验证身份认证服务
取消临时环境变量

# unset OS_AUTH_URL OS_PASSWORD

作为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

(密码为之前创建admin用户设置的密码)
作为demo用户请求验证令牌

# openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo token issue

:这个命令使用demo用户和API端口5000的密码,它只允许常规(非管理员)访问身份服务API。

9.创建环境脚本
(1) 创建admin-openrc脚本

# vi admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

(2)创建demo-openrc脚本

# vi 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=123456
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

(3)使用admin-openrc脚本

# . admin-openrc

(4)请求身份验证令牌:

# openstack token issue

猜你喜欢

转载自blog.csdn.net/qq_40791253/article/details/83063039