裸金属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" }] }