目录
裸金属从卷启动
官网链接:https://docs.openstack.org/ironic/rocky/admin/boot-from-volume.html
裸机信息
设置存储接口
openstack baremetal node set $NODE_UUID --storage-interface cinder
设置裸机iscsi_boot为true
openstack baremetal node set $NODE_UUID --property capabilities=iscsi_boot:True
[root@controller ~]# ironic node-show BM2
The "ironic" CLI is deprecated and will be removed in the S* release. Please use the "openstack baremetal" CLI instead.
+------------------------+--------------------------------------------------------------------------+
| Property | Value |
+------------------------+--------------------------------------------------------------------------+
| bios_interface | no-bios |
| boot_interface | pxe |
| chassis_uuid | None |
| clean_step | {} |
| conductor_group | |
| console_enabled | False |
| console_interface | no-console |
| created_at | 2019-10-14T12:22:45+00:00 |
| deploy_interface | iscsi |
| deploy_step | {} |
| driver | ipmi |
| driver_info | {u'ipmi_port': 6231, u'ipmi_username': u'admin', u'deploy_kernel': |
| | u'2fc86082-7815-456c-9096-d6647d8483c9', u'ipmi_address': |
| | u'172.27.127.84', u'deploy_ramdisk': u'b186b144-33e7-4089-a33f- |
| | 7075fb7cb7cc', u'ipmi_password': u'******', u'provisioning_network': u |
| | 'f85ac9fe-d11c-442c-9ad6-019ad3d3d91d', u'cleaning_network': u'f85ac9fe- |
| | d11c-442c-9ad6-019ad3d3d91d'} |
| driver_internal_info | {u'agent_url': u'http://172.27.127.174:9999', u'deploy_steps': None, |
| | u'agent_version': u'3.7.0.dev13'} |
| extra | {} |
| fault | None |
| inspect_interface | inspector |
| inspection_finished_at | None |
| inspection_started_at | None |
| instance_info | {} |
| instance_uuid | None |
| maintenance | False |
| maintenance_reason | None |
| management_interface | ipmitool |
| name | BM2 |
| network_interface | flat |
| power_interface | ipmitool |
| power_state | power off |
| properties | {u'memory_mb': 4096, u'local_gb': 8, u'cpus': 1, u'capabilities': |
| | u'iscsi_boot:True'} |
| provision_state | manageable |
| provision_updated_at | 2019-10-15T05:40:07+00:00 |
| raid_config | {} |
| raid_interface | agent |
| rescue_interface | no-rescue |
| reservation | None |
| resource_class | BAREMETAL_TEST |
| storage_interface | cinder |
| target_power_state | None |
| target_provision_state | None |
| target_raid_config | {u'logical_disks': [{u'size_gb': 1000, u'raid_level': u'6'}]} |
| traits | [] |
| updated_at | 2019-10-21T07:36:50+00:00 |
| uuid | 052f694c-c781-419e-8832-070ff5232908 |
| vendor_interface | ipmitool |
+------------------------+--------------------------------------------------------------------------+
创建卷连接器
openstack baremetal volume connector create --node $NODE_UUID --type iqn --connector-id iqn.2017-08.org.openstack.$NODE_UUID
[root@controller ~]# openstack baremetal volume connector list
+--------------------------------------+--------------------------------------+------+----------------------------------------------------------------+
| UUID | Node UUID | Type | Connector ID |
+--------------------------------------+--------------------------------------+------+----------------------------------------------------------------+
| 1187a426-cedf-4271-8d43-9c55aae29228 | a76d2e94-1632-49d8-9b63-0ab929f82ed8 | iqn | iqn.2017-08.org.openstack.a76d2e94-1632-49d8-9b63-0ab929f82ed8 |
+--------------------------------------+--------------------------------------+------+----------------------------------------------------------------+
Ipxe配置
sudo mkdir -p /tftpboot
sudo mkdir -p /httpboot
sudo chown -R ironic /tftpboot
sudo chown -R ironic /httpboot
把http目录链接到httpboot,修改用户所属组
rm -rf /httpboot/
ln -s /var/www/html/ /httpboot
chown -R ironic:ironic /var/www/html/
echo 'r ^([^/]) /tftpboot/\1' > /tftpboot/map-file
echo 'r ^(/tftpboot/) /tftpboot/\2' >> /tftpboot/map-file
yum install ipxe-bootimgs
cp /usr/share/ipxe/{undionly.kpxe,ipxe.efi} /tftpboot
修改ironic.conf配置文件
vi /etc/ironic/ironic.conf
[pxe]
tftp_root=/tftpboot
tftp_server=$host_ip
ipxe_enabled=True
[deploy]
http_root=/httpboot
http_url=http://$host_ip
[pxe]
pxe_bootfile_name=undionly.kpxe
pxe_config_template=$pybasedir/drivers/modules/ipxe_config.template
uefi_pxe_bootfile_name=ipxe.efi
uefi_pxe_config_template=$pybasedir/drivers/modules/ipxe_config.template
重启服务
systemctl restart openstack-ironic-conductor
创建iscsi启动镜像
安装镜像制作工具
pip install diskimage-builder
创建基础镜像
export IMAGE_NAME=centos
export DIB_DEV_USER_USERNAME=devuser
export DIB_DEV_USER_PASSWORD=123456
export DIB_DEV_USER_PWDLESS_SUDO=Yes
export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack"
BIOS启动镜像
disk-image-create centos7 vm devuser cloud-init-datasources dhcp-all-interfaces iscsi-boot dracut-regenerate -o dev_image
生成镜像文件
ll
drwxr-xr-x 3 root root 27 Feb 27 08:25 dev_image.d
-rw-r--r-- 1 root root 651034624 Feb 27 08:27 dev_image.qcow2
一开始创建DIB代码有BUG,在安装dracut-regenerate时会中断,修改代码,社区已合并
vim /usr/lib/python2.7/site-packages/diskimage_builder/elements/iscsi-boot/extra-data.d/50-check-dracut-regenerate
#!/bin/bash
if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
if [[ $DISTRO_NAME = "centos7" ]]; then
eval declare -A image_elements=($(get_image_element_array))
if [[ ! "${image_elements[@]}" =~ "dracut-regenerate" ]]; then
echo "The dracut-regenerate element is required!"
exit 1
fi
fi
disk-image-create centos7 vm devuser cloud-init-datasources dhcp-all-interfaces iscsi-boot dracut-regenerate block-device-efi -o $IMAGE_NAME
block-device-efi是以UEFI启动
上传镜像到glance
openstack image create "boot_volume" --file disk-image.qcow2 --disk-format qcow2 --container-format bare --public
创建卷
将上传的镜像创建为镜像卷
创建实例
创建实例以卷启动
卷起成功