OpenStack系统由分开安装的几个关键服务组成。这些服务可根据其他云需求一起工作,包括计算(Compute),身份(Identity),网络(Networking),镜像(Image),块存储(Block Storage),对象存储(Object Storage),计量(Telemetry),编排(Orchestration)和数据库(Database)服务。可以单独安装任何这些项目,并将其配置为独立的或连接的实体。

本节介绍如何在控制器节点上安装和配置OpenStack Identity服务(代号为keystone)。为了可扩展性,此配置部署了Fernet令牌和Apache HTTP服务器来处理请求。

1.1.1.1.1. 摘要

本指南将向您展示如何使用Red Hat Enterprise Linux 7及其衍生产品(centos 7)通过RDO存储库提供的软件包安装Keystone。

包括配置选项和示例配置文件的说明。

警告

本指南是一项正在进行的工作,经常更新。预发行包已被用于测试,一些说明可能无法与最终版本一起使用。若遇到的任何错误,请到社区寻求帮助。

 

1.1.1.1.2. 身份服务概述

OpenStack身份服务提供了一个单一的集成点,用于管理身份验证,授权和服务目录。

 

身份服务通常是用户与之互动的第一个服务。一旦经过身份验证,最终用户可以使用其身份访问其他OpenStack服务。同样,其他OpenStack服务利用Identity服务来确保用户是他们所说的,并且发现其他服务在部署中的位置。身份服务还可以与某些外部用户管理系统(如LDAP)集成。

 

用户和服务可以通过使用由Identity服务管理的服务目录定位其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以有一个或多个端点,每个端点可以是三种类型之一:管理员(admin),内部(internal)或公共(public)。在生产环境中,出于安全原因,不同的端点类型可能驻留在暴露于不同类型用户的不同网络上。例如,公共API网络可能从互联网上可见,因此客户可以管理其云。管理API网络可能仅限于管理云基础架构的组织内的运营商。内部API网络可能仅限于包含OpenStack服务的主机。此外,OpenStack支持多个区域进行可扩展性,为了简便,本指导为所有端点类型在管理网络建立一个默认区域RegionOne。,区域(regions),服务(services)和端点(endpoints )在Identity Service中一起构成部署的服务目录。部署中的每个OpenStack服务需要一个服务条目,其中存储在Identity服务中的相应端点。所有这些内容可以在安装和配置身份服务后完成。

 

身份服务包含以下组件:

 

服务器Server

集中式服务器使用RESTful接口提供认证和授权服务。

驱动程序Drivers

驱动程序或服务后端集成到集中式服务器。它们用于在OpenStack外部的存储库中访问身份信息,并且可能已经存在于部署OpenStack的基础架构(例如,SQL数据库或LDAP服务器)中。

模块(Modules)

中间件模块在使用Identity服务的OpenStack组件的地址空间中运行。这些模块拦截服务请求,提取用户凭据,并将其发送到集中式服务器进行授权。中间件模块和OpenStack组件之间的集成使用Python Web服务器网关接口。

1.1.1.1.3. 先决条件

在安装和配置身份服务之前,必须创建一个数据库。

1、使用数据库访问客户端作为root用户连接到数据库服务器:

$ mysql -u root -p

2、创建keystone数据库:

MariaDB [(none)]> CREATE DATABASE keystone;

3、授予对keystone数据库的正确访问权限:

MariaDB [(none)]> GREN ALL PRIVILEGES ON keystone。* TO'keystone'@'localhost'\ 
IDENTIFIED BY'KEYSTONE_DBPASS'; 
MariaDB [(none)]> GREN ALL PRIVILEGES ON keystone。* TO'keystone'@'%'\ 
IDENTIFIED BY'KEYSTONE_DBPASS';

更换KEYSTONE_DBPASS一个合适的密码。

4、退出数据库访问客户端。

 

1.1.1.1.4. 安装和配置组件

注意

本指南使用Apache HTTP服务器mod_wsgi在端口5000和35357上提供身份服务请求。默认情况下,keystone服务仍会监听这些端口。

 

1、运行以下命令安装软件包:

# yum install openstack-keystone httpd mod_wsgi

2、编辑/etc/keystone/keystone.conf文件并完成以下操作:

 

在该[database]部分中,配置数据库访问:

[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

替换KEYSTONE_DBPASS为数据库选择的密码。

在本[token]节中,配置Fernet令牌提供程序:

[token]
# ...
provider = fernet

3、导入身份服务数据库:

# su -s /bin/sh -c "keystone-manage db_sync" keystone

4、初始化Fernet密钥存储库:

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

5、引导身份服务:

# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

替换ADMIN_PASS为管理用户的合适密码。

1.1.1.1.5. 配置Apache HTTP服务器

1、编辑/etc/httpd/conf/httpd.conf文件并配置 ServerName选项以引用控制器节点:

ServerName controller

2、创建一个链接到该/usr/share/keystone/wsgi-keystone.conf文件:

# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
1.1.1.1.6. 完成安装

1、启动Apache HTTP服务并将其配置为在系统启动时启动:

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

2、配置管理帐户

$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ 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

用keystone-install-configure-rdo命令中ADMIN_PASS使用的密码替换keystone-manage bootstrap

1.1.1.1.7. 创建域(domain),项目(projects),用户(users)和角色(roles)

身份服务为每个OpenStack服务提供身份验证服务。认证服务使用域(domain),项目(projects),用户(users)和角色(roles)的组合。

1、本指南使用包含您添加到环境中的每个服务的唯一用户的服务项目。创建service 项目:

$ openstack project create --domain default \
  --description "Service Project" service

 

2、常规(非管理员)任务应使用非特权项目和用户。作为示例,本指南创建demo项目和用户。

 

创建demo项目:

$ openstack project create --domain default \
  --description "Demo Project" demo

 

创建demo用户:

$ openstack user create --domain default \
  --password-prompt demo
 
User Password:
Repeat User Password:

创建user角色:

$ openstack role create user

 

将user角色添加到demo项目和用户:

$ openstack role add --project demo --user demo user
1.1.1.1.8. 验证操作

在安装其他服务之前验证身份服务的运行。

注意:在控制器节点上执行这些命令。

1、出于安全考虑,禁用临时认证令牌机制:

 

编辑/etc/keystone/keystone-paste.ini 文件并删除admin_token_auth从 [pipeline:public_api],[pipeline:admin_api]和[pipeline:api_v3]段。

 

2、取消设置临时OS_AUTH_URL和OS_PASSWORD 环境变量:

$ unset OS_AUTH_URL OS_PASSWORD

3、作为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用户的密码。

4、作为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,该端口仅允许定期(非管理员)访问Identity Service API。

 

1.1.1.1.9. 创建OpenStack客户端环境脚本

以前的部分使用环境变量和命令选项的组合来通过openstack客户端与身份服务进行交互 。为了提高客户端操作的效率,OpenStack支持简单的客户端环境脚本,也称为OpenRC文件。这些脚本通常包含所有客户端的常用选项,但也支持唯一选项。

 

一、创建脚本

创建客户端环境的脚本admin和demo 项目和用户。本指南的后面部分将引用这些脚本来为客户端操作加载适当的凭据。

注意:客户端环境脚本的路径不受限制。为方便起见,可以将脚本放置在任何位置,但请确保它们可访问并位于适合部署的安全位置,因为它们包含敏感凭据。

1、创建并编辑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=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

替换ADMIN_PASS为admin身份服务中为用户选择的密码。

 

2、创建并编辑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=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

替换DEMO_PASS为demo身份服务中为用户选择的密码。

二、使用脚本

要作为特定项目和用户运行客户端,可以在运行相关联的客户端环境脚本之前简单加载它们。例如:

1、加载admin-openrc文件以使用Identity服务和admin项目的位置填充环境变量以及用户凭据:
$ . admin-openrc
2、请求身份验证令牌:
$ openstack token issue



转载于:https://blog.51cto.com/yuweibing/1981176