centos7-1810部署2节点OpenStack的R版本 —— 三、安装keystone
参考官方文档:https://docs.openstack.org/install-guide/index.html
https://docs.openstack.org/install-guide/openstack-services.html#minimal-deployment-for-rocky
三、安装keystone(控制节点)
目录
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:[email protected]/keystone
在该[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_URL
和OS_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)创建脚本
为admin
和demo
项目以及用户创建客户端环境脚本。本指南的后续部分将参考这些脚本为客户端操作加载适当的凭据。
客户端环境脚本的路径不受限制。为了方便起见,您可以将脚本放置在任何位置,但是请确保脚本可以访问并且位于适合您的部署的安全位置,因为它们确实包含敏感的凭据。
- 创建和编辑
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
上一篇: 数据库-JDBC连接池
下一篇: 并行计算模型