openstack-mitaka中Identity服务如何安装
这篇文章给大家分享的是有关openstack-mitaka中Identity服务如何安装的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
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
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
Require all granted
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
Require all granted
完成安装
启动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
感谢各位的阅读!关于"openstack-mitaka中Identity服务如何安装"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!