OpenStack系列之一:手动部署OpenStack Queens(2.Keystone安装)


title: OpenStack系列之一:手动部署OpenStack Queens(2.Keystone安装)
categories: Linux
tags:
- OpenStack
timezone: Asia/Shanghai
date: 2019-01-21

Keystone安装教程

OpenStack系统由几个单独安装的关键服务组成。这些服务根据您的云需求协同工作,包括计算,身份,网络,映像,块存储,对象存储,遥测,编排和数据库服务。您可以单独安装任何这些项目,并将它们单独配置或作为连接实体配置。

本节介绍如何在控制器节点上安装和配置代号为keystone的OpenStack Identity服务。出于可伸缩性的目的,此配置部署了Fernet令牌和Apache HTTP服务器来处理请求。

身份服务概述

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

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

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

Identity服务包含以下组件:

  • 服务器

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

  • 驱动程序

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

  • 模块

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

第一步:安装和配置

这一章描述如何在控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求。

1.先决条件

在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌

完成下面的步骤以创建数据库:

官方建议使用openssl rand -hex 10生成管理员的令牌,这里直接使用xiaoliu作为令牌,请根据自己情况修改

# 用数据库连接客户端以 root 用户连接到数据库服务器
mysql -u root -p

# 创建 keystone 数据库
CREATE DATABASE keystone;

# 对``keystone``数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'xiaoliu';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'xiaoliu';
2.安全并配置组件
# 默认配置文件在各发行版本中可能不同。
# 你可能需要添加这些部分,选项而不是修改已经存在的部分和选项。
# 另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。
# 教程使用带有``mod_wsgi``的Apache HTTP服务器来服务认证服务请求,端口为5000和35357。
# 缺省情况下,Kestone服务仍然监听这些端口。然而,本教程手动禁用keystone服务。
  • 1.运行以下命令来安装

    yum install openstack-keystone httpd mod_wsgi

  • 2.编辑文件 /etc/keystone/keystone.conf 并完成如下动作

以下有1处controller,请根据自己情况修改
以下有1处xiaoliu,请根据自己情况修改
cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak
cat /etc/keystone/keystone.conf.bak | grep -v "^#" | grep -v '^$' > /etc/keystone/keystone.conf
vim /etc/keystone/keystone.conf
# 在``[DEFAULT]``部分,定义初始管理令牌的值:
# 使用前面步骤生成的随机数替换``ADMIN_TOKEN`` 值。这里直接使用```xiaoliu```
vim /etc/keystone/keystone.conf

# 在 [database] 部分,配置数据库访问:
# 将``KEYSTONE_DBPASS``替换为你为数据库选择的密码。
[database]
...
connection = mysql+pymysql://keystone:xiaoliu@controller/keystone

# 在``[token]``部分,配置Fernet UUID令牌的提供者。
[token]
...
provider = fernet
  • 3.初始化身份认证服务的数据库(忽略输出中任何不推荐使用的信息。):

    su -s /bin/sh -c “keystone-manage db_sync” keystone

  • 4.初始化Fernet keys:

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

  • 5.引导身份服务:

此处有一处xiaoliu,请根据自己情况修改

# 在Queens发布之前,keystone需要在两个独立的端口上运行,以容纳Identity v2 API
# 该API通常在端口35357上运行单独的仅管理服务。
# 通过删除v2 API,keystone可以在同一端口上运行 所有接口。
keystone-manage bootstrap --bootstrap-password xiaoliu \
                            --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
  • 6.验证数据库是否写入数据

    应该有44张表

    mysql -uroot -p’xiaoliu’ -D keystone -se “show tables;”
    mysql -uroot -p’xiaoliu’ -D keystone -se “show tables;” | wc -l

4.配置 Apache HTTP 服务器
  • 1.编辑/etc/httpd/conf/httpd.conf 文件,配置ServerName 选项为控制节点:
这里有1处controller,请根据自己情况修改
vim /etc/httpd/conf/httpd.conf
ServerName controller
  • 2.Create a link to the /usr/share/keystone/wsgi-keystone.conf file:

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

  • 3.完成安装:启动 Apache HTTP 服务并配置其随系统启动

    systemctl enable httpd.service
    systemctl stop httpd.service
    systemctl start httpd.service
    systemctl status httpd.service

  • 4.配置管理帐户

这里有一处xiaoliu,请根据自己实际情况更改
export OS_USERNAME=admin
export OS_PASSWORD=xiaoliu
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

第二步:创建域、项目、用户和角色

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

1.虽然本指南中的keystone-manage bootstrap步骤中已存在“默认”域,但创建新域的正式方法是:
openstack domain create --description "An Example Domain" example
2.本指南使用的服务项目包含您添加到环境中的每项服务的唯一用户。创建service 项目:
openstack project create --domain default --description "Service Project" service
3.常规(非管理员)任务应该使用非特权项目和用户。例如,本指南创建demo项目和用户。
# Create the demo project:
# 在为此项目创建其他用户时,请勿重复此步骤。
openstack project create --domain default --description "Demo Project" demo

# Create the demo user:
openstack user create --domain default --password-prompt demo

# Create the user role:
openstack role create user

# Add the user role to the demo project and user(此命令不提供输出):
openstack role add --project demo --user demo user

# 您可以重复此过程以创建其他项目和用户。
4.以上命令输出展示
[root@controller etcd]# openstack domain create --description "An Example Domain" example
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | 6382acd4ecc24413bdf341a80b920e5d |
| name        | example                          |
| tags        | []                               |
+-------------+----------------------------------+

[root@controller etcd]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 86d4cfbe705a40e38972b6edd8d8c07a |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

[root@controller etcd]# openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | bbcf23cf2d2b48c7a12ea260c88d034b |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

[root@controller etcd]# openstack user create --domain default --password-prompt demo
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 46815d5055ae4bfab86daa380abadc92 |
| name                | demo                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

[root@controller etcd]# openstack role create user
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 565b6fa9b22548ae90c81a73b19fd0fc |
| name      | user                             |
+-----------+----------------------------------+

[root@controller etcd]# openstack role add --project demo --user demo user

第四步:验证操作(在控制节点上执行这些命令。)

在安装其他服务之前验证Identity服务的操作。

1.取消设置临时 变量OS_AUTH_URL和OS_PASSWORD环境变量:
unset OS_AUTH_URL OS_PASSWORD
2.作为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
3.作为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
4.以上命令输出展示
[root@controller home]# 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
Password: 
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2019-01-20T12:05:21+0000                                                                                                                                                                |
| id         | gAAAAABcRFXxrt4vkdWz7ukT7KYIdeNv8qyq7_V-9FNHZzRlJfiosOo4oZ7wpn75cy2rWJ1LZYEXN-s3F_g0fwEoP9vhdGv_qlhpf9ZqckE2qi8amEgtsrzWFJJqIOdOgRkT938Pqay6O-MEJyLPIWtSwgiT8_QfTvupVH3kvCr1OlLTobkjtrQ |
| project_id | e72d68bddd2a4d07847201304b746b0b                                                                                                                                                        |
| user_id    | 08ccf6358fc3423ea0bdfcf06a01a4d1                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

[root@controller home]# 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
Password: 
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2019-01-20T12:05:27+0000                                                                                                                                                                |
| id         | gAAAAABcRFX3E1uj-yOe6P7zns8b5YoV8lcmS30ZV0xLeIVRK33imqadBQ0Reej2kfu-eIN9rKBZeYL2P046o-SOqqRAiSJWjJ3cmhrrojjqxxAoyV7ezhhXP__onnZkA9L7MI3fUeqZKBGqHUPGOBqMm1LErSJCqpzB9qPjhRuUdiGNkNhp9JM |
| project_id | bbcf23cf2d2b48c7a12ea260c88d034b                                                                                                                                                        |
| user_id    | 46815d5055ae4bfab86daa380abadc92                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

第五步:创建 OpenStack 客户端环境脚本

前面的部分使用环境变量和命令选项的组合来通过openstack客户端与Identity服务进行交互 。为了提高客户端操作的效率,OpenStack支持简单的客户端环境脚本,也称为OpenRC文件。这些脚本通常包含所有客户端的公共选项,但也支持唯一选项。有关更多信息,请参阅“ OpenStack最终用户指南”。

创建客户端环境的脚本admin和demo 项目和用户。本指南的后续部分引用这些脚本来加载客户端操作的适当凭据。

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

1.创建脚本
以下有两处controller,请根据自己情况更改
以下有两处xiaoliu,请根据情况更改(分别为admin和demo用户密码)
# 1.编辑文件 admin-openrc 并添加如下内容:
cat <<EOF >/home/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=xiaoliu
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF

# 2.编辑文件 demo-openrc 并添加如下内容:
cat <<EOF >/home/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=xiaoliu
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
2.使用脚本

使用特定租户和用户运行客户端,你可以在运行之前简单地加载相关客户端脚本。例如:

# 1.加载``admin-openrc``文件来身份认证服务的环境变量位置和``admin``项目和用户证书:
source /home/admin-openrc
echo $OS_USERNAME

# 2.请求认证令牌:
openstack token issue
3.结果展示
[root@controller home]# source /home/admin-openrc

[root@controller home]# echo $OS_USERNAME
admin

[root@controller home]# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2019-01-20T12:06:17+0000                                                                                                                                                                |
| id         | gAAAAABcRFYpoBvrSJXkOZowE5OMJMjoWMdBHO092VwYukgvON3mo5JZetoA__Y5-Crib1P2lcdBDOeCiu8YWUb1xZJdPEbnO3WYtr6CzEm_fWzN9_tDUELny4s632BCpx0UP8YASlyar8NNhsUo7mlx5XOuJwAsvxpRhoMSO3IWnwtErJSZJYU |
| project_id | e72d68bddd2a4d07847201304b746b0b                                                                                                                                                        |
| user_id    | 08ccf6358fc3423ea0bdfcf06a01a4d1                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值