5.5. 配置部署接口

当您置备裸机节点时,overcloud 上的裸机置备服务(ironic)会将基础操作系统镜像写入裸机节点上的磁盘。默认情况下,部署接口将镜像挂载到 iSCSI 挂载上,然后将镜像复制到每个节点上的磁盘。或者,您可以使用直接部署,将 HTTP 位置的磁盘镜像直接写入裸机节点上的磁盘。

部署接口在置备过程中具有重要角色。部署接口编配部署,并定义将镜像传送到目标磁盘的机制。

前提条件

  • 依赖在运行 ironic-conductor 的裸机服务节点上配置的软件包。
  • 将 OpenStack Compute (nova)配置为使用裸机服务端点。
  • 为可用的硬件创建类别,nova 必须从正确的类别引导新节点。
  • 镜像必须在镜像服务(glance)中提供:

    • bm-deploy-kernel
    • bm-deploy-ramdisk
    • user-image
    • user-image-vmlinuz
    • user-image-initrd
  • 用于注册 Ironic API 服务的硬件。

工作流

使用以下示例工作流来了解标准部署流程。根据您使用的 ironic 驱动程序接口,一些步骤可能会有所不同:

  1. Nova 调度程序从 Nova API 接收引导实例请求。
  2. Nova 调度程序标识相关的虚拟机监控程序,并确定目标物理节点。
  3. Nova 计算管理器将声明所选虚拟机监控程序的资源。
  4. Nova 计算管理器根据 nova 引导请求指定的网络接口在网络服务中创建未绑定租户虚拟接口(VIFs)。
  5. Nova 计算从 Nova 计算 virt 层调用 driver.spawn,以创建含有所有必要信息的 generate 任务。在生成过程中,virt 驱动程序完成以下步骤。

    1. 使用部署镜像、实例 UUID、请求的功能和类别属性的信息,更新目标 ironic 节点。
    2. 调用 ironic API,以验证目标节点的电源和部署接口。
    3. 将 VIFs 附加到节点。每个 neutron 端口可以附加到任何 ironic 端口或组。端口组的优先级高于端口。
    4. 生成配置驱动器。
  6. Nova ironic virt 驱动程序使用 Ironic API 对裸机节点的服务,使用 Ironic API 部署请求。
  7. 虚拟接口插入,Neutron API 会更新 DHCP 来配置 PXE/TFTP 选项。
  8. ironic 节点引导接口准备(i) PXE 配置,并缓存部署内核和 ramdisk。
  9. ironic 节点管理接口发出命令,以启用节点的网络引导。
  10. 如果需要,ironic 节点部署接口会缓存实例镜像、内核和 ramdisk。
  11. ironic 节点电源接口指示节点电源。
  12. 节点启动部署 ramdisk。
  13. 使用 iSCSI 部署时,编排器将 iSCSI 上的镜像复制到物理节点。使用直接部署,部署 ramdisk 从临时 URL 下载镜像。这个 URL 必须是兼容 Swift API 的对象存储或 HTTP URL。
  14. 节点引导接口会切换 PXE 配置以引用实例镜像,并指示 ramdisk 代理软关闭节点。如果软电源失败,则裸机节点使用 IPMI/BMC 关闭。
  15. 部署接口指示网络接口删除所有调配端口,将租户端口绑定到节点,并打开节点电源。

新裸机节点的置备状态现在为

5.5.1. 在 overcloud 上配置直接部署接口

iSCSI 部署接口是默认部署接口。但是,您可以启用直接部署接口,将 HTTP 位置的镜像下载到目标磁盘。

注意

您的 overcloud 节点内存 tmpfs 必须至少有 8GB RAM。

流程
  1. 创建或修改自定义环境文件 /home/stack/templates/direct_deploy.yaml,并指定 IronicEnabledDeployInterfacesIronicDefaultDeployInterface 参数。

    parameter_defaults:
      IronicEnabledDeployInterfaces: direct
      IronicDefaultDeployInterface: direct

    如果您使用 iscsi 注册节点,请在 IronicEnabledDeployInterfaces 参数中保留 iscsi 值:

    parameter_defaults:
      IronicEnabledDeployInterfaces: direct,iscsi
      IronicDefaultDeployInterface: direct
  2. 默认情况下,每个节点上的 Bare Metal Provisioning 服务(ironic)代理都包含通过 HTTP 链接存储在对象存储服务(swift)中的镜像。或者,ironic 可以通过 ironic-conductor HTTP 服务器将此镜像直接流传输到节点。要更改提供镜像的服务,请在 /home/stack/templates/direct_deploy.yaml 文件中将 IronicImageDownloadSource 设置为 http

    parameter_defaults:
      IronicEnabledDeployInterfaces: direct
      IronicDefaultDeployInterface: direct
      IronicImageDownloadSource: http
  3. 在您的 overcloud 部署中包含自定义环境:

    $ openstack overcloud deploy \
      --templates \
      ...
      -e /usr/share/openstack-tripleo-heat-templates/environments/services/ironic.yaml \
      -e /home/stack/templates/direct_deploy.yaml \
      ...

    等待部署完成。

注意

如果您没有指定 IronicDefaultDeployInterface 或想要使用不同的部署接口,请在创建或更新节点时指定部署接口:

$ openstack baremetal node create --driver ipmi --deploy-interface direct
$ openstack baremetal node set <NODE> --deploy-interface direct