OpenStack系列之一:手动部署OpenStack Quee

2019-02-23  本文已影响0人  小六的昵称已被使用

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服务包含以下组件:

第一步:安装和配置

这一章描述如何在控制节点上安装和配置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服务。
yum install openstack-keystone httpd mod_wsgi

以下有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
su -s /bin/sh -c "keystone-manage db_sync" keystone
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

此处有一处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
# 应该有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处controller,请根据自己情况修改

vim /etc/httpd/conf/httpd.conf
ServerName controller
systemctl enable httpd.service
systemctl stop httpd.service
systemctl start httpd.service
systemctl status httpd.service

这里有一处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                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
上一篇下一篇

猜你喜欢

热点阅读