裸金属ironic-conductor调研

作者 Billy 日期 2017-10-24
裸金属ironic-conductor调研

裸金属ironic-conductor调研

背景

使用ironic conductor作为后端进行裸金属安装,调研ironic-conductor的功能特性

成果

  • 裸金属安装需要部署的ramdisk镜像和kernel镜像,部署安装时,裸金属以pxe启动,利用tftp下载这两个部署镜像。
  • 部署镜像中有ironic-python-agent,会从ironic-conductor下载真正要部署的镜像,包括它的ramdisk、kernel和qcow2自身镜像
  • 手动清理来创建、清除raid(pxe_drac驱动)

待研究

  • diskimagebuilder使用cloud-init元素如何设置root密码并开启root用户可登录权限 暂不用

openstack请求

所有裸金属相关的请求,都需要增加header

  • X-OpenStack-Ironic-API-Version = 1.31

更改管理状态 Set Provision State

  • 管理状态(provision state)是表示裸金属节点生命周期阶段的标识,变更状态需要遵循ironic状态机的流向[1],若流向不可达,请求将会返回错误。更改管理状态会让裸金属节点真正去做相应操作。

  • 请求方法:PUT

  • url: < ironic-api ip >:6385/v1/nodes/< node-uuid >/states/provision

  • body:

      {
          "target" : "manage"
      }
    

清除维护状态 Clear Maintenance Flag

  • 当ironic-conductor认为裸金属节点出现错误时,会自动将维护状态设置为true。维护状态是为了标注裸金属节点是否正在进行手工维护的字段,当裸金属节点处于维护状态时,所有请求都会被阻塞。openstack也同时提供了管理该状态的接口。
  • 请求方法: DELETE
  • url: < ironic-api ip >:6385/v1/nodes/< node-uuid >/maintenance
  • body:无

设置维护状态 Clear Maintenance Flag

  • 在某些特定情况下,需要设置裸金属节点为维护状态,以免租户使用。

  • 请求方法: PUT

  • url: < ironic-api ip >:6385/v1/nodes/< node-uuid >/maintenance

  • body:

      {
          "reason": "< 维护原因 >"
      }
    

设置raid Set Raid Config

  • 设置裸金属节点raid信息。该接口只是将目标raid设置存储到数据源,并不会调度裸金属节点去实施操作。

  • 裸金属raid设置方法有多种[2]

  • 请求方法: PUT

  • url:< ironic-api ip >:6385/v1/nodes/< node-uuid >/states/raid

  • body:

      {
       "logical_disks": [{
                          "size_gb": 500,
                          "raid_level": "5",
                          "disk_type": "hdd"
                         },{
                          "size_gb": 300,
                          "raid_level": "1",
                          "is_root_volume": true,
                          "disk_type": "ssd"
                         }]
      }
    

手动清理(做raid)

  • 将设置好的raid进行安装,若安装过程中出现错误,则在node管理状态上体现,并且有相关的错误信息。

  • 使用的就是更改管理状态接口,但参数稍有不同,增加了clean_steps清理步骤操作。

  • 请求方法: PUT

  • url:< ironic-api ip >:6385/v1/nodes/< node-uuid >/states/provision

  • body:

      {
          "target": "clean",
          "clean_steps": [{
                  "step": "create_configuration",
                   "interface": "raid"
          }]
      }
    

手动清理(清除raid)

  • 将裸金属节点raid全部清除,若安装过程中出现错误,则在node管理状态上体现,并且有相关的错误信息。

  • 使用的就是做raid的接口更改了清理步骤。

  • 请求方法: PUT

  • url:< ironic-api ip >:6385/v1/nodes/< node-uuid >/states/provision

  • body:

      {
          "target": "clean",
          "clean_steps": [{
                  "step": "delete_configuration",
                   "interface": "raid"
          }]
      }
    

参考

  1. 裸金属node状态机
  2. 裸金属raid设置