参考官方文档:https://docs.openstack.org/install-guide/index.html

https://docs.openstack.org/install-guide/openstack-services.html#minimal-deployment-for-rocky


三、安装keystone(控制节点)

centos7配置jre Centos7配置keystone_centos7配置jre

 

目录

三、安装keystone(控制节点)

1、概述:

2、安装和配置

(1)前提条件:

(2)安装和配置:

(3)配置Apache HTTP服务器

(4)完成安装

3、创建域,项目,用户和角色

4、验证操作

5、创建OpenStack客户端环境脚本

(1)创建脚本

(2)使用脚本


1、概述:

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

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

用户和服务可以使用由身份服务管理的服务目录来查找其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以具有一个或多个端点,并且每个端点可以是以下三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同的终结点类型可能驻留在暴露给不同类型用户的单独网络上。例如,公共API网络可能在Internet上可见,因此客户可以管理其云。admin API网络可能仅限于管理云基础架构的组织内的运营商。内部API网络可能仅限于包含OpenStack服务的主机。此外,OpenStack支持多个区域以实现可伸缩性。RegionOne区域。身份服务中创建的区域,服务和端点共同构成了部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中存储相应的端点。这可以在安装和配置了身份服务之后完成。

身份服务包含以下组件:

服务器

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

driver

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

模组

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

2、安装和配置

(1)前提条件:

  • 使用数据库访问客户端以root用户身份连接到数据库服务器:

mysql -u root -p

  • 创建keystone数据库:

MariaDB [(none)]> CREATE DATABASE keystone;

  • 授予对keystone数据库的适当访问权限:

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

  • 退出数据库访问客户端。

(2)安装和配置:

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

yum install openstack-keystone httpd mod_wsgi

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

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

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

centos7配置jre Centos7配置keystone_客户端_02

 

在该[token]部分中,配置Fernet令牌提供者:

[token] # ... provider = fernet

  • 填充身份服务数据库:

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

mysql -ukeystone -pkeystone -e "use keystone; show tables;"

  • 初始化Fernet密钥存储库:

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

  • 引导身份服务:

keystone-manage bootstrap --bootstrap-password admin \ --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选项以引用控制器节点:

ServerName controller

  • 创建/usr/share/keystone/wsgi-keystone.conf文件链接:

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

(4)完成安装

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

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

  • 配置管理帐户

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

 

3、创建域,项目,用户和角色

身份服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和角色的组合。

1.尽管本指南的keystone引导程序步骤中已经存在“默认”域,但是创建新域的正式方法是:

openstack domain create --description "An Example Domain" example

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

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

3.常规(非管理员)任务应使用没有特权的项目和用户。例如,本指南创建myproject项目和myuser 用户。

  • 创建myproject项目:

openstack project create --domain default \ --description "Demo Project" myproject

  • 创建myuser用户:

openstack user create --domain default \ --password-prompt myuser

  • 创建myrole角色:

openstack role create myrole

  • myrole角色添加到myproject项目和myuser用户:

openstack role add --project myproject --user myuser myrole

4、验证操作

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

1.取消设置临时 变量OS_AUTH_URLOS_PASSWORD环境变量:

unset OS_AUTH_URL OS_PASSWORD

2.以admin用户身份请求身份验证令牌:

此命令使用admin用户密码。

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

3.作为myuser上一节中创建的用户,请请求认证令牌:

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

5、创建OpenStack客户端环境脚本

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

(1)创建脚本

admindemo 项目以及用户创建客户端环境脚本。本指南的后续部分将参考这些脚本为客户端操作加载适当的凭据。

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

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

  • 创建和编辑demo-openrc文件并添加以下内容:

export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=myproject export OS_USERNAME=myuser export OS_PASSWORD=myuser export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2

(2)使用脚本

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

  • 加载admin-openrc文件以使用身份服务的位置以及admin项目和用户凭据填充环境变量:

. admin-openrc

  • 请求身份验证令牌:

openstack token issue