安装和配置 (Red Hat)

本节描述了如何在控制器节点上安装和配置镜像服务,代号为 glance。为了简单起见,此配置将镜像存储在本地文件系统上。

先决条件

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

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

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

      $ mysql -u root -p
      
    • 创建 glance 数据库

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

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

      GLANCE_DBPASS 替换为合适的密码。

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

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

    $ . admin-openrc
    
  3. 要创建服务凭证,请完成以下步骤

    • 创建 glance 用户

      $ openstack user create --domain default --password-prompt glance
      
      User Password:
      Repeat User Password:
      +---------------------+----------------------------------+
      | Field               | Value                            |
      +---------------------+----------------------------------+
      | domain_id           | default                          |
      | enabled             | True                             |
      | id                  | 3f4e777c4062483ab8d9edd7dff829df |
      | name                | glance                           |
      | options             | {}                               |
      | password_expires_at | None                             |
      +---------------------+----------------------------------+
      
    • admin 角色添加到 glance 用户和 service 项目

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

      注意

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

    • 创建 glance 服务实体

      $ openstack service create --name glance \
        --description "OpenStack Image" image
      
      +-------------+----------------------------------+
      | Field       | Value                            |
      +-------------+----------------------------------+
      | description | OpenStack Image                  |
      | enabled     | True                             |
      | id          | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
      | name        | glance                           |
      | type        | image                            |
      +-------------+----------------------------------+
      
  4. 创建镜像服务 API 端点

    $ openstack endpoint create --region RegionOne \
      image public http://controller:9292
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 340be3625e9b4239a6415d034e98aace |
    | interface    | public                           |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
    | service_name | glance                           |
    | service_type | image                            |
    | url          | http://controller:9292           |
    +--------------+----------------------------------+
    
    $ openstack endpoint create --region RegionOne \
      image internal http://controller:9292
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | a6e4b153c2ae4c919eccfdbb7dceb5d2 |
    | interface    | internal                         |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
    | service_name | glance                           |
    | service_type | image                            |
    | url          | http://controller:9292           |
    +--------------+----------------------------------+
    
    $ openstack endpoint create --region RegionOne \
      image admin http://controller:9292
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 0c37ed58103f4300a84ff125a539032d |
    | interface    | admin                            |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 8c2c7f1b9b5049ea9e63757b5533e6d2 |
    | service_name | glance                           |
    | service_type | image                            |
    | url          | http://controller:9292           |
    +--------------+----------------------------------+
    
  5. 注册配额限制 (可选)

    如果您决定在 Glance 中使用按租户的配额,则必须先在 Keystone 中注册这些限制

    $ openstack --os-cloud devstack-system-admin registered limit create \
      --service glance --default-limit 1000 --region RegionOne image_size_total
    
    +---------------+----------------------------------+
    | Field         | Value                            |
    +---------------+----------------------------------+
    | default_limit | 1000                             |
    | description   | None                             |
    | id            | 9cedfc5de80345a9b13ed00c2b5460f2 |
    | region_id     | RegionOne                        |
    | resource_name | image_size_total                 |
    | service_id    | e38c84a2487f49fd9864193bdc8a3174 |
    +---------------+----------------------------------+
    
    $ openstack --os-cloud devstack-system-admin registered limit create \
      --service glance --default-limit 1000 --region RegionOne image_stage_total
    
    +---------------+----------------------------------+
    | Field         | Value                            |
    +---------------+----------------------------------+
    | default_limit | 1000                             |
    | description   | None                             |
    | id            | 5a68712b6ba6496d823d0c66e5e860b9 |
    | region_id     | RegionOne                        |
    | resource_name | image_stage_total                |
    | service_id    | e38c84a2487f49fd9864193bdc8a3174 |
    +---------------+----------------------------------+
    
    $ openstack --os-cloud devstack-system-admin registered limit create \
      --service glance --default-limit 100 --region RegionOne image_count_total
    
    +---------------+----------------------------------+
    | Field         | Value                            |
    +---------------+----------------------------------+
    | default_limit | 100                              |
    | description   | None                             |
    | id            | beb91b043296499f8e6268f29d8b2749 |
    | region_id     | RegionOne                        |
    | resource_name | image_count_total                |
    | service_id    | e38c84a2487f49fd9864193bdc8a3174 |
    +---------------+----------------------------------+
    
    $ openstack --os-cloud devstack-system-admin registered limit create \
      --service glance --default-limit 100 --region RegionOne \
      image_count_uploading
    
    +---------------+----------------------------------+
    | Field         | Value                            |
    +---------------+----------------------------------+
    | default_limit | 100                              |
    | description   | None                             |
    | id            | fc29649c047a45bf9bc03ec4a7bcb8af |
    | region_id     | RegionOne                        |
    | resource_name | image_count_uploading            |
    | service_id    | e38c84a2487f49fd9864193bdc8a3174 |
    +---------------+----------------------------------+
    

    请确保在您的 glance-api.conf 文件中也设置 use_keystone_limits=True

安装和配置组件

注意

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

  1. 安装软件包

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

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

      [database]
      # ...
      connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
      

      GLANCE_DBPASS 替换为您为镜像服务数据库选择的密码。

    • [keystone_authtoken][paste_deploy] 部分中,配置身份服务访问

      [keystone_authtoken]
      # ...
      www_authenticate_uri  = http://controller:5000
      auth_url = http://controller:5000
      memcached_servers = controller:11211
      auth_type = password
      project_domain_name = Default
      user_domain_name = Default
      project_name = service
      username = glance
      password = GLANCE_PASS
      
      [paste_deploy]
      # ...
      flavor = keystone
      

      GLANCE_PASS 替换为您在身份服务中为 glance 用户选择的密码。

      注意

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

    • [glance_store] 部分中,配置本地文件系统存储和镜像文件位置

      [DEFAULT]
      # ...
      enabled_backends=fs:file
      
      [glance_store]
      # ...
      default_backend = fs
      
      [fs]
      filesystem_store_datadir = /var/lib/glance/images/
      
    • [oslo_limit] 部分中,配置对 keystone 的访问

      [oslo_limit]
      auth_url = http://controller:5000
      auth_type = password
      user_domain_id = default
      username = glance
      system_scope = all
      password = GLANCE_PASS
      endpoint_id = ENDPOINT_ID
      region_name = RegionOne
      

      GLANCE_PASS 替换为您在身份服务中为 glance 用户选择的密码。

      将 ENDPOINT_ID 替换为您之前创建的镜像端点的 ID(在本例中,这将是 340be3625e9b4239a6415d034e98aace),您可以通过运行以下命令找到它

      $ openstack endpoint list --service glance --region RegionOne
      

      确保 glance 帐户具有对系统范围资源的读取访问权限(例如限制)

      $ openstack role add --user glance --user-domain Default --system all reader
      

      有关配置统一限制客户端的更多信息,请参阅 oslo_limit 文档

    • [DEFAULT] 部分中,可选地启用按租户的配额

      [DEFAULT]
      use_keystone_limits = True
      

      请注意,如果启用了此功能,则必须创建上面描述的已注册限制。

  1. 填充镜像服务数据库

    # su -s /bin/sh -c "glance-manage db_sync" glance
    

    注意

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

完成安装

  • 启动镜像服务并配置它们在系统启动时启动

    # systemctl enable openstack-glance-api.service
    # systemctl start openstack-glance-api.service