为 Ubuntu 安装和配置 Placement

本节描述了在使用 Ubuntu 包时如何安装和配置 placement 服务。

先决条件

在安装和配置 placement 服务之前,您必须创建数据库、服务凭证和 API 端点。

创建数据库

  1. 要创建数据库,请完成以下步骤

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

      # mysql
      
    • 创建 placement 数据库

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

      MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
        IDENTIFIED BY 'PLACEMENT_DBPASS';
      MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
        IDENTIFIED BY 'PLACEMENT_DBPASS';
      

      PLACEMENT_DBPASS 替换为合适的密码。

    • 退出数据库访问客户端。

配置用户和端点

  1. 激活 admin 凭证以访问仅管理员可用的 CLI 命令

    $ . admin-openrc
    
  2. 使用您选择的 PLACEMENT_PASS 创建 Placement 服务用户

    $ openstack user create --domain default --password-prompt placement
    
    User Password:
    Repeat User Password:
    +---------------------+----------------------------------+
    | Field               | Value                            |
    +---------------------+----------------------------------+
    | domain_id           | default                          |
    | enabled             | True                             |
    | id                  | fa742015a6494a949f67629884fc7ec8 |
    | name                | placement                        |
    | options             | {}                               |
    | password_expires_at | None                             |
    +---------------------+----------------------------------+
    
  3. 将 Placement 用户添加到具有 admin 角色的服务项目

    $ openstack role add --project service --user placement admin
    

    注意

    此命令不会产生任何输出。

  4. 在服务目录中创建 Placement API 条目

    $ openstack service create --name placement \
      --description "Placement API" placement
    
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | Placement API                    |
    | enabled     | True                             |
    | id          | 2d1a27022e6e4185b86adac4444c495f |
    | name        | placement                        |
    | type        | placement                        |
    +-------------+----------------------------------+
    
  5. 创建 Placement API 服务端点

    注意

    根据您的环境,端点的 URL 将因端口(可能为 8780 而不是 8778,或者根本没有端口)和主机名而异。您有责任确定正确的 URL。

    $ openstack endpoint create --region RegionOne \
      placement public http://controller:8778
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 2b1b2637908b4137a9c2e0470487cbc0 |
    | interface    | public                           |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 2d1a27022e6e4185b86adac4444c495f |
    | service_name | placement                        |
    | service_type | placement                        |
    | url          | http://controller:8778           |
    +--------------+----------------------------------+
    
    $ openstack endpoint create --region RegionOne \
      placement internal http://controller:8778
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 02bcda9a150a4bd7993ff4879df971ab |
    | interface    | internal                         |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 2d1a27022e6e4185b86adac4444c495f |
    | service_name | placement                        |
    | service_type | placement                        |
    | url          | http://controller:8778           |
    +--------------+----------------------------------+
    
    $ openstack endpoint create --region RegionOne \
      placement admin http://controller:8778
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 3d71177b9e0f406f98cbff198d74b182 |
    | interface    | admin                            |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 2d1a27022e6e4185b86adac4444c495f |
    | service_name | placement                        |
    | service_type | placement                        |
    | url          | http://controller:8778           |
    +--------------+----------------------------------+
    

安装和配置组件

注意

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

  1. 安装软件包

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

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

      [placement_database]
      # ...
      connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement
      

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

    • [api][keystone_authtoken] 部分,配置 Identity 服务访问

      [api]
      # ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      # ...
      auth_url = http://controller:5000/v3
      memcached_servers = controller:11211
      auth_type = password
      project_domain_name = Default
      user_domain_name = Default
      project_name = service
      username = placement
      password = PLACEMENT_PASS
      

      PLACEMENT_PASS 替换为您为 Identity 服务中的 placement 用户选择的密码。

      注意

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

      注意

      user_namepasswordproject_domain_nameuser_domain_name 的值需要与您的 keystone 配置同步。

  3. 填充 placement 数据库

    # su -s /bin/sh -c "placement-manage db sync" placement
    

    注意

    忽略此输出中的任何弃用消息。

完成安装

  • 重新加载 Web 服务器以适应 placement 的新配置设置。

    # service apache2 restart