文档章节

openstack-mitaka安装文档-Identity服务安装

J
 JennerLuo
发布于 2016/08/10 23:26
字数 2293
阅读 132
收藏 0

Identity服务安装

Identity服务概述

OpenStack的Identity服务为管理认证、授权和service catalog服务提供了单点集成。其它OpenStack服务使用Identity服务作为一个通用的统一API。此外,提供有关用户信息,但该服务不包括在OpenStack(如LDAP服务)可以被集成进一个预先存在的基础设施。

为了从Identity服务获得效益,其它OpenStack服务需要与它进行协调工作。当一个OpenStack服务收到一个用户的请求时,它会用Identity服务来检查此用户是否获得request授权。

Identity服务包括以下组件:

Server

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

Drivers

可以被集成到中央服务器的驱动程序或者服务后端。他们在OpenStack拓展库被用于访问身份信息,并且已经存在于部署了OpenStack的基础设施(例如,SQL数据库或LDAP服务)。

Modules

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

当安装OpenStack的Identity服务时,你必须将每个服务注册到你的OpenStack安装里。Identity服务可以跟踪OpenStack服务安装,并且定位他们的网络。

 

安装和配置

本节将介绍如何在controller节点安装和配置OpenStack的Identity服务(代号keystone)。出于性能考滤,这种配置部署Fernet令牌和Apache HTTP服务器来处理请求。

先决条件

在配置OpenStack的Identity服务之前,必须创建一个数据库和管理令牌。

1.创建数据库,需要完成下面步骤

l用root账号登陆数据库

mysql -u root -p

l创建keystone数据库

CREATE DATABASE keystone;

l给keystone数据库授权

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'  IDENTIFIED BY 'KEYSTONE_DBPASS';

将KEYSTONE_DBPASS替换成合适的密码

l退出数据库

2.生成随机数来作用管理令牌,初始化配置时会用到

openssl rand -hex 10

安装和配置组件

 

1.运行下列命令来安装软件包

yum install openstack-keystone httpd mod_wsgi

2.编辑/etc/keystone/keystone.conf文件并完成下列步骤

l在[DEFAULT], 定义管理令牌

[DEFAULT]
...
admin_token = ADMIN_TOKEN

将ADMIN_TOKEN替换成之前生成的随机数

l在[database],配置数据库连接

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

将KEYSTONE_DBPASS替换成正确的数据库密码(数据库密码不能有特殊符号)

l在[token],配置Fernet令牌提供商

[token]
...
provider = fernet

3.填充Identity服务数据库

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

备注:忽略此处输出任何弃用信息。

4.初始化Fernet keys

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

配置Apache HTTP 服务器

1.编辑/etc/httpd/conf/httpd.conf,配置ServerName选项指向controller节点

ServerName controller

2.创建/etc/httpd/conf.d/wsgi-keystone.conf文件并添加以下内容

Listen 5000
Listen 35357
 
<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined
 
    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>
 
<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined
 
    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

完成安装

启动Apached HTTP服务并配置开机自启动

systemctl enable httpd.service
systemctl start httpd.service

 

创建service entity和API endpoints

Identity服务提供服务目录和它们的位置。每个添加到OpenStack环境的服务都要求要有一个service entity和几个API endpoints在目录中。

先决条件

默认情况下,Identity数据库不包含任何信息来支持传统的身份验证和目录服务。必须用之前创建的临时身份令牌来初始化服务实体和API端点。

你必须通过带--os-token参数的命令或者设置OS_TOKEN环境变量来给OpenStack传递身份认证令牌。同样,你必须通过带有—os-url参数的命令或者设置OS_URL环境变量来给OpenStack传递Identity服务URL。下面步骤用设置环境变量的方式。

警告:出于安全,不要长时间用临时身份验证令牌初始化Identity服务

1.配置认证令牌

export OS_TOKEN=ADMIN_TOKEN

将ADMIN_TOKEN替换成之前生成的随机数

2.配置endpoint URL

export OS_URL=http://controller:35357/v3

3.配置Identity API版本

export OS_IDENTITY_API_VERSION=3

创建service entity和API端点

1.在OpenStack环境中Identity服务管理一个目录服务。服务使用目录来确定环境中其它可可用的服务。

执行下列命令来创建service entity

openstack service create --name keystone --description "OpenStack Identity" identity

2.在OpenStack环境,Identity服务管理相关服务API endpoints的目录。服务使用这个目录    来确定如何与环境中的其它服务通信。

OpenStack为每个服务提供三个API endpoint:admin, internal,和public。默认情况admin API endpoint 可以修改用户和租户,然而public和internal APIs 并允许这些操作。在生产环境中,出于安全原因,这些变量可能驻留在不同的网络上,服务于不同的用户类型。例如,Public API网络在互联网上可能被访问得到,所以客户可以管理他们的云。Admin API网络可能受限于在管理云基础设施的组织内进行操作。Internal API网络可能受限在包含OpenStack服务主机上。另外,OpenStack支持可扩展性的多区域。为简单起见,本教程为所有的endpoint使用管理网络并设置默认区域为RegionOne。

 

创建Identity服务的API endpoints

openstack endpoint create --region RegionOne identity public http://controller:5000/v3

openstack endpoint create --region RegionOne identity internal http://controller:5000/v3

openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

创建domain, projects users和roles

Identity服务为每个OpenStack服务提供认证服务。认证服务将域,项目(租户)、用户和角色结合使用。

1.创建默认的域

openstack domain create --description "Default Domain" default

2.在你的环境中为管理操作创建一个管理项目、用户和角色

l创建admin项目

openstack project create --domain default --description "Admin Project" admin

l创建admin用户

openstack user create --domain default --password-prompt admin

l创建admin角色

openstack role create admin

l将管理员角色添加到管理项目和用户中

openstack role add --project admin --user admin admin

 

3.本指南使用一个服务项目,该项目仅包含一个用户给每个你添加到环境中的服务使用。

创建服务项目

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

4.常规(非管理员)的任务应该使用一个普通的项目和用户。作为一个例子,本指南将创建一个demo项目和用户。

l创建demo项目

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

备注:当给这个项目创建额外的用户时不要重复这个步骤。

l创建demo用户

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

l创建用户角色

openstack role create user

l将用户角色添加到demo项目和用户中

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

 

验证操作

开始安装其它服务之前验证Identity服务是否正常安装。

以下操作在controller节点进行

 

1.出于安全考滤,禁用临时身份验证令牌机制:

编辑/etc/keystone/keystone-paste.ini文件,然后从[pipeline:public_api], [pipeline:admin_api], 和 [pipeline:api_v3]这三部分中移除admin_token_auth

 

2.撤消临时的OS_TOKEN 和 OS_URL环境变量

unset OS_TOKEN OS_URL

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

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

 

创建OpenStack客户端环境脚本

之前章节结合使用环境变量和命令行选项通过OpenStack客户端与Identity服务交互。为提高操作效率,OpenStack支持简单的客户端环境脚本既openrc文件。这些脚本通常包含所有客户端的常见选项,但也支持独特的选项。更多信息,请查看OpenStack End User Guide.

 

创建脚本

为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替换成正确的密码

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替换成正确的密码

使用脚本

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

1.加载admin-openrc文件

. admin-openrc

2.请求一个身份认证令牌

openstack token issue

© 著作权归作者所有

J
粉丝 5
博文 130
码字总数 75981
作品 0
深圳
程序员
私信 提问
OpenStack Mitaka 正式发布

伴随着OpenStack的第十三次发布(mitaka),企业和服务提供商可以获得更好、更强的管理性、可扩展性以及更好的用户体验。感谢来自293家公司的2336贡献者在每一个关键时刻及时的交付Mitaka。 ...

linuxprobe
2016/04/09
2K
2
安装Openstack的Mitaka版本的swift服务时,swift服务无法启动

你好,我在安装并且配置好Openstack的Mitaka版本的swift服务后,swift服务无法启动。proxy服务运行在controller node上,并且已经正常运行,chrony服务正常同步时间。 swift服务安装环境如下...

jokk
2016/08/19
731
0
OpenStack centos版安装(二)

在OpenStack第一天文档翻译后,丁丁努力坚持每晚抽时间翻译OpenStack官方网站提供的安装与部署指南,本文翻译自官方安装与部署指南的前四章内容,前四章内容主要是对OpenStack整体安装步骤以...

蓝狐乐队
2014/04/18
270
0
OpenStack基础环境 [一]

OpenStack基础环境 [一] OpenStack基础环境 [一] openstack介绍  openstack是一个云平台管理的项目,它不是一个软件。也就是说我们可以使用来管理我们一个数据中心大量资源池。它里面包含了...

Abcdocker
2018/06/26
0
0
初识openstack之5——安装Keystone

一、实验说明 按照官方文档搭建queens版本openstack,拓扑如下图所示: 二、Keystone介绍 keystone是一个集合了认证、授权和为open stack其他服务编录的项目,代码名为keystone,服务名称为i...

qiao645
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
7
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部