Ironic/NovaBaremetalIronicMigration
目录
- 1 历史文档
- 2 从 Nova Baremetal 迁移到 Ironic
- 2.1 假设和要求
- 2.2 迁移步骤
- 2.2.1 安装 Ironic
- 2.2.2 准备用于驱动程序的 "deploy-ironic" 内核和 initrd
- 2.2.3 开始维护期
- 2.2.4 停止 Ironic 和 Nova 的服务
- 2.2.5 更新 nova-compute 配置以使用 Ironic
- 2.2.6 更新 Nova baremetal 的 flavor 元数据
- 2.2.7 运行 migrate_db 脚本
- 2.2.8 启动 Ironic 服务
- 2.2.9 确保 Ironic 服务启动
- 2.2.10 (重新)启动 Nova 的 compute 和 scheduler 服务
- 2.2.11 检查 Nova hypervisor 详细信息,以确保正确配置
- 2.2.12 结束维护期
- 3 Nova Baremetal CLI 命令
- 4 参考资料
历史文档
此 Wiki 页面是 Ironic 项目早期阶段的历史文档。有关最新文档,请参阅 https://docs.openstack.org/ironic。
从 Nova Baremetal 迁移到 Ironic
此 Wiki 的目的是为了帮助理解从 Nova 的 "baremetal" 驱动程序迁移到其 "ironic" 驱动程序的流程。首先列出编写本文档的假设和迁移成功完成的物理要求。然后提供迁移步骤的描述。
请注意,Nova 的 baremetal 驱动程序将在 Kilo 中移除。
假设和要求
本节描述了对迁移可以执行的运行环境所做的假设,并且反映了将在 Juno 稳定分支上执行的持续升级测试的环境。在其他情况下,迁移也可能是可行的。
- 仅支持 Juno 版本的“横向”迁移。换句话说
- 从 Juno "baremetal" 迁移到 Juno "ironic" 是受支持的,但
- 从 Icehouse "baremetal" 迁移到 Juno "ironic" 不受支持。
- 这仅处理 Nova baremetal 的 IPMI 和 VirtualPowerManager 电源管理器/驱动程序(不包括 Pdu、IBootManager)。
- 作为上游 CI 测试(grenade)的一部分,未测试 Nova 中 virt 驱动程序之间的实时实例迁移,因此不建议这样做。
- 尽管如此,迁移期间保留运行的实例预计在迁移后能够正常工作。
- 从 Icehouse "baremetal" 升级到 Juno "baremetal" 未经上游测试,但我们不知道有任何影响此升级的错误。
迁移步骤
本节概述了操作员执行从 Juno 版本 Nova "baremetal" 驱动程序到 Juno 版本 Nova "ironic" 驱动程序的横向迁移的推荐方法。
请注意,提供的示例可能与您的环境略有不同。
安装 Ironic
按照 Ironic 的 安装指南 的这两个部分安装 Ironic
- 安装和配置先决条件
- 配置 Bare Metal 服务。 暂时不要启动 Ironic 服务(最后一步)。
准备用于驱动程序的 "deploy-ironic" 内核和 initrd
这些说明适用于 PXE 驱动程序。 如果您计划使用其他驱动程序,请准备该驱动程序的适当镜像。
使用 diskimage-builder 创建 Ironic 部署内核和 RAM 磁盘。 例如,以下命令将在 deploy-ironic.kernel 和 deploy-ironic.initramfs 文件中创建内核和 RAM 磁盘
diskimage-builder/bin/ramdisk-image-create -a $NODE_ARCH $NODE_DIST deploy-ironic -o deploy-ironic $DIB_ELEMENTS
将上述构建的 Ironic 部署内核和 RAM 磁盘加载到 Glance 中。 例如
dkid=$(glance image-create --name "deploy-ironic-kernel" --public --disk-format aki --file deploy-ironic.kernel | awk ' / id / {print $4}')
drid=$(glance image-create --name "deploy-ironic-ramdisk" --public --disk-format ari --file deploy-ironic.initramfs | awk ' / id / {print $4}')
开始维护期
为了防止用户访问 Nova,请开始您的维护期。 维护将在迁移完成后结束。
停止 Ironic 和 Nova 的服务
如果 Ironic 服务正在运行,请停止它们
sudo service ironic-api stop sudo service ironic-conductor stop
如果 Nova 服务正在运行,请停止 compute 和 scheduler 服务
sudo service nova-compute stop sudo service nova-scheduler stop
更新 nova-compute 配置以使用 Ironic
- 按照 配置 Compute 服务以使用 Bare Metal 服务 的步骤 1 和 2 更改一些设置并添加一个 [ironic] 部分
- 删除整个 [baremetal] 部分
更新 Nova baremetal 的 flavor 元数据
更新 Nova "baremetal" flavor 元数据,以引用加载到 Glance 中的 deploy-ironic 内核和 RAM 磁盘。 例如
nova flavor-key baremetal set "baremetal:deploy_kernel_id"="$dkid" nova flavor-key baremetal set "baremetal:deploy_ramdisk_id"="$drid"
运行 migrate_db 脚本
ironic-nova-bm-migrate 脚本会将 Nova baremetal 节点和接口信息以及相关的驱动程序配置从 Nova 数据库迁移到 Ironic 数据库。 它仅支持从 IPMI 和 VirtualPowerManager 电源驱动程序迁移。
ironic-nova-bm-migrate --nova-bm-db $database_connection_url_nova_bm \
--ironic-db $database_connection_url_ironic \
--node-arch x86_64 \
--nova-conf $NOVA_CONF_FILE
启动 Ironic 服务
通过以下方式(重新)启动 Ironic 服务
sudo service ironic-api start sudo service ironic-conductor start
确保 Ironic 服务启动
在运行以下 "ironic" 命令之前,请确保已设置/导入所需的 OS_* 环境变量。(有关更多信息,请参阅 ironic 命令行界面)。
ironic driver-list
应该产生如下输出
+--------------+--------+ | name | hosts | +--------------+--------+ | pxe_ipmitool | ubuntu | | pxe_ssh | ubuntu | +--------------+--------+
- 请注意,上述列表可能与您的输出不完全匹配;这取决于您启用的驱动程序。 如果这是您第一次启动 Ironic 服务,建议检查 Ironic 日志是否有错误。
然后运行 "node-list" 以确保节点已正确迁移
ironic node-list
应该产生如下列表
+--------------------------------------+---------------+-------------+-----------------+-------------+ | uuid | instance_uuid | power_state | provision_state | maintenance | +--------------------------------------+---------------+-------------+-----------------+-------------+ | 36f24e67-aaec-41ba-ba20-509bdd548974 | None | power off | None | False | | 77024bdb-a360-419f-a0b5-bc18a97571c1 | None | power off | None | False | +--------------------------------------+---------------+-------------+-----------------+-------------+
使用 node-show 命令详细检查每个节点。 迁移脚本填充了节点的 uuid、instance_uuid、created_at、updated_at、power_state、driver 和 driver_info、instance_info 以及从其 Nova baremetal 节点获取的属性
ironic node-show 36f24e67-aaec-41ba-ba20-509bdd548974
+------------------------+-------------------------------------------------------------------------+
| Property | Value |
+------------------------+-------------------------------------------------------------------------+
| instance_uuid | None |
| target_power_state | None |
| properties | {u'memory_mb': u'2048', u'cpu_arch': u'i386', u'local_gb': u'40', |
| | u'cpus': u'1'} |
| maintenance | False |
| driver_info | {u'ssh_username': u'nobodycam', u'ssh_virt_type': u'virsh', |
| | u'ssh_address': u'192.168.122.1', u'ssh_key_contents': u'-----BEGIN RSA |
| | PRIVATE KEY----- |
| | <SSH KEY REMOVED> |
| | -----END RSA PRIVATE KEY-----'} |
| extra | {} |
| last_error | None |
| created_at | 2014-09-15T17:50:59+00:00 |
| target_provision_state | None |
| driver | pxe_ssh |
| updated_at | 2014-09-15T18:24:15+00:00 |
| instance_info | {} |
| chassis_uuid | None |
| provision_state | None |
| reservation | None |
| power_state | power off |
| console_enabled | False |
| uuid | 36f24e67-aaec-41ba-ba20-509bdd548974 |
+------------------------+-------------------------------------------------------------------------+
(重新)启动 Nova 的 compute 和 scheduler 服务
sudo service nova-compute start sudo service nova-scheduler start
检查 Nova hypervisor 详细信息,以确保正确配置
除了在启动期间检查日志文件是否有明显的错误之外,您还可以检查 nova-compute 节点的 hypervisor 详细信息,以确保它们已正确注册并从 Ironic 报告正确的资源
nova hypervisor-list +----+--------------------------------------+ | ID | Hypervisor hostname | +----+--------------------------------------+ | 1 | a6c3b50d-049b-4878-b92f-91e13ac855e2 | +----+--------------------------------------+
nova hypervisor-show 1 +-------------------------+--------------------------------------+ | Property | Value | +-------------------------+--------------------------------------+ | cpu_info | baremetal cpu | | current_workload | 0 | | disk_available_least | - | | free_disk_gb | 0 | | free_ram_mb | 0 | | host_ip | 192.0.2.1 | | hypervisor_hostname | a6c3b50d-049b-4878-b92f-91e13ac855e2 | | hypervisor_type | ironic | | hypervisor_version | 1 | | id | 1 | | local_gb | 40 | | local_gb_used | 40 | | memory_mb | 4096 | | memory_mb_used | 4096 | | running_vms | 1 | | service_disabled_reason | - | | service_host | nova-compute | | service_id | 5 | | state | up | | status | enabled | | vcpus | 1 | | vcpus_used | 1 | +-------------------------+--------------------------------------+
结束维护期
完成了!
Nova Baremetal CLI 命令
迁移到 Ironic 后,一些 Nova baremetal 命令将继续有效。 此表列出了 baremetal 命令,无论它们是否将在迁移后继续有效,以及它们对应的 Ironic 命令。 建议使用与受支持的 baremetal 命令对应的 Ironic 命令。
| Nova baremetal 命令 | 迁移后支持 | 对应的 Ironic 命令 |
|---|---|---|
| baremetal-interface-add | 否 | port-create |
| baremetal-interface-list | 否 | port-list |
| baremetal-interface-remove | 否 | port-delete |
| baremetal-node-create | 否 | node-create |
| baremetal-node-delete | 否 | node-delete |
| baremetal-node-list | 是 | node-list |
| baremetal-node-show | 是 | node-show |
参考文献
- Diskimage-builder: https://github.com/openstack/diskimage-builder
- Ironic: https://wiki.openstack.org/wiki/Ironic
- Nova Baremetal: https://wiki.openstack.org/wiki/Baremetal