安装和配置

本节描述了如何在控制器节点上安装和配置 OpenStack 身份认证服务,代号为 keystone。为了可扩展性,此配置部署 Fernet 令牌和 Apache HTTP 服务器来处理请求。

注意

在继续之前,请确保您已完成 Openstack 安装指南 中的先决条件安装步骤。

先决条件

在安装和配置 Identity 服务之前,您必须创建一个数据库。

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

    # mysql
    
  2. 创建 keystone 数据库

    MariaDB [(none)]> CREATE DATABASE keystone;
    
  3. 授予 keystone 数据库适当的访问权限

    注意

    KEYSTONE_DBPASS 替换为合适的密码。

    在 MySQL 8 和 9 上,必须先创建用户

    MariaDB [(none)]> CREATE USER 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE-DBPASS';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost';
    MariaDB [(none)]> CREATE USER 'keystone'@'%' IDENTIFIED BY 'KEYSTONE-DBPASS';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%';
    

    在 MySQL 5.7 上,以下命令将在同一行创建用户

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
    IDENTIFIED BY 'KEYSTONE_DBPASS';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
    IDENTIFIED BY 'KEYSTONE_DBPASS';
    
  4. 退出数据库访问客户端。

安装和配置组件

注意

默认配置文件因发行版而异。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。此外,配置片段中的省略号 (...) 表示您应该保留的潜在默认配置选项。

注意

本指南使用 Apache HTTP 服务器和 mod_wsgi 来处理 Identity 服务在 5000 端口上的请求。默认情况下,keystone 服务仍然监听此端口。该软件包会为您处理所有的 Apache 配置(包括激活 mod_wsgi apache2 模块以及在 Apache 中的 keystone 配置)。

  1. 运行以下命令来安装软件包

    # apt install keystone
    
  2. 编辑 /etc/keystone/keystone.conf 文件并完成以下操作

    • [database] 部分,配置数据库访问

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

      KEYSTONE_DBPASS 替换为您为数据库选择的密码。

      注意

      注释掉或删除 [database] 部分中的任何其他 connection 选项。

    • [token] 部分,配置 Fernet token 提供程序

      [token]
      # ...
      provider = fernet
      
  3. 填充 Identity 服务数据库

    # su -s /bin/sh -c "keystone-manage db_sync" keystone
    
  4. 初始化 Fernet 密钥仓库

    注意

    --keystone-user--keystone-group 标志用于指定将用于运行 keystone 的操作系统用户/组。提供这些标志是为了允许在另一个操作系统用户/组下运行 keystone。在下面的示例中,我们将用户和组称为 keystone

    # keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    # keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
    
  5. 启动 Identity 服务

    注意

    在 Queens 版本发布之前,keystone 需要在两个独立的端口上运行,以适应 Identity v2 API,该 API 运行一个独立的仅限管理员的服务,通常在 35357 端口上。随着 v2 API 的移除,keystone 可以在同一个端口上运行所有接口。

    # keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
      --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
    

    ADMIN_PASS 替换为管理员用户的合适密码。

配置 Apache HTTP 服务器

  1. 编辑 /etc/apache2/apache2.conf 文件,并将 ServerName 选项配置为引用控制器节点

    ServerName controller
    

    如果 ServerName 条目不存在,则需要添加它。

SSL

安全的部署应该配置 Web 服务器使用 SSL,或者运行在 SSL 终止器之后。

完成安装

  1. 重启 Apache 服务

    # service apache2 restart
    
  2. 通过设置适当的环境变量来配置管理帐户

    $ export OS_USERNAME=admin
    $ export OS_PASSWORD=ADMIN_PASS
    $ 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
    

    这里显示的值是从 keystone-manage bootstrap 创建的默认值。

    ADMIN_PASS 替换为在 keystone-install-configure-ubuntukeystone-manage bootstrap 命令中使用的密码。