美文网首页
OpenStack系列之一:手动部署OpenStack Quee

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

作者: 小六的昵称已被使用 | 来源:发表于2019-02-23 22:01 被阅读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服务包含以下组件:

    • 服务器

      集中式服务器使用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                                                                                                                                                        |
    +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

    相关文章

      网友评论

          本文标题:OpenStack系列之一:手动部署OpenStack Quee

          本文链接:https://www.haomeiwen.com/subject/uddkyqtx.html