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

Openstack 安装部署指南翻译系列 之 Keystone服务安装(Identity)

2017-11-13 10:51 741 查看
OpenStack系统由分开安装的几个关键服务组成。这些服务可根据其他云需求一起工作,包括计算(Compute),身份(Identity),网络(Networking),镜像(Image),块存储(Block Storage),对象存储(Object Storage),计量(Telemetry),编排(Orchestration)和数据库(Database)服务。可以单独安装任何这些项目,并将其配置为独立的或连接的实体。本节介绍如何在控制器节点上安装和配置OpenStack Identity服务(代号为keystone)。为了可扩展性,此配置部署了Fernet令牌和Apache HTTP服务器来处理请求。1.1.1.1.1. [b]摘要[/b]本指南将向您展示如何使用Red Hat Enterprise Linux 7及其衍生产品(centos 7)通过RDO存储库提供的软件包安装Keystone。包括配置选项和示例配置文件的说明。
警告
本指南是一项正在进行的工作,经常更新。预发行包已被用于测试,一些说明可能无法与最终版本一起使用。若遇到的任何错误,请到社区寻求帮助。
1.1.1.1.2. [b]身份服务概述[/b]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. [b]先决条件[/b]在安装和配置身份服务之前,必须创建一个数据库。1、使用数据库访问客户端作为root用户连接到数据库服务器:$ mysql -u root -p2、创建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. [b]安装和配置组件[/b]注意
本指南使用Apache HTTP服务器mod_wsgi在端口5000和35357上提供身份服务请求。默认情况下,keystone服务仍会监听这些端口。 1、运行以下命令安装软件包:# yum install openstack-keystone httpd mod_wsgi2、编辑/etc/keystone/keystone.conf文件并完成以下操作: 在该[database]部分中,配置数据库访问:[database]# ...connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone替换KEYSTONE_DBPASS为数据库选择的密码。在本[token]节中,配置Fernet令牌提供程序:[token]# ...provider = fernet3、导入身份服务数据库:# su -s /bin/sh -c "keystone-manage db_sync" keystone4、初始化Fernet密钥存储库:# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone5、引导身份服务:# 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. [b]配置Apache HTTP服务器[/b]1、编辑/etc/httpd/conf/httpd.conf文件并配置 ServerName选项以引用控制器节点:ServerName controller2、创建一个链接到该/usr/share/keystone/wsgi-keystone.conf文件:# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/1.1.1.1.6. [b]完成安装[/b]1、启动Apache HTTP服务并将其配置为在系统启动时启动:# systemctl enable httpd.service# systemctl start httpd.service2、配置管理帐户$ 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 bootstrap1.1.1.1.7. [b]创建域(domain),项目(projects),用户(users)和角色(roles)[/b]身份服务为每个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. [b]验证操作[/b]在安装其他服务之前验证身份服务的运行。注意:在控制器节点上执行这些命令。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_PASSWORD3、作为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. [b]创建OpenStack客户端环境脚本[/b]以前的部分使用环境变量和命令选项的组合来通过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-openrc2、请求身份验证令牌:
$ openstack token issue
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  翻译 openstack keystone