配置镜像服务以获取临时 URL

Baremetal 服务的一些驱动程序(特别是使用 直接部署Ansible 部署 接口的驱动程序,以及一些虚拟介质驱动程序)要求目标用户镜像可通过无身份验证的干净 HTTP(S) URL 提供(既不基于用户名/密码,也不基于令牌)。

在使用集成在 OpenStack 中的 Baremetal 服务时,可以通过以下描述的镜像服务和对象存储服务的特定配置来实现这一点。

  1. 配置镜像服务以使用对象存储作为后端来存储镜像。有关更多详细信息,请参阅镜像服务配置指南。

    注意

    当使用 Ceph+RadosGW 作为对象存储服务时,存储在镜像服务中的镜像也必须通过对象存储服务提供。

  2. 为镜像服务用于在对象存储服务中存储镜像的对象存储帐户启用 TempURLs。

    1. 检查是否启用了 TempURLs

      # executed under credentials of the user used by Image service
      # to access Object Storage service
      $ openstack object store account show
      +------------+---------------------------------------+
      | Field      | Value                                 |
      +------------+---------------------------------------+
      | Account    | AUTH_bc39f1d9dcf9486899088007789ae643 |
      | Bytes      | 536661727                             |
      | Containers | 1                                     |
      | Objects    | 19                                    |
      | properties | Temp-Url-Key='secret'                 |
      +------------+---------------------------------------+
      
    2. 如果设置了属性 Temp-Url-Key,请记下其值。

    3. 如果未设置属性 Temp-Url-Key,则必须对其进行配置(以下示例中 secret 用于值)

      $ openstack object store account set --property Temp-Url-Key=secret
      
  3. 可选地,配置 ironic-conductor 服务。默认配置假定

    1. 对象存储服务由 swift 实现,

    2. 对象存储服务 URL 可从服务目录获得,

    3. 镜像服务用于访问对象存储的项目与 Bare Metal 服务用于访问它的项目相同,

    4. 镜像服务使用的容器名为 glance

    如果这些假设中的任何一个不成立,您可能需要更改您的配置文件(通常位于 /etc/ironic/ironic.conf),例如

    [glance]
    
    swift_endpoint_url = http://openstack/swift
    swift_account = AUTH_bc39f1d9dcf9486899088007789ae643
    swift_container = glance
    swift_temp_url_key = secret
    
  4. (重新)启动 ironic-conductor 服务。