制作Openstack Ironic裸金属的部署镜像和系统镜像

我的知乎专栏:云计算实战技能

1. 搭建diskimage-builder环境

https://docs.openstack.org/diskimage-builder/latest/

大家可以根据上面官网链接来搭建diskimage-builder环境,在这里就不再细说。下面我们直接看怎么来build裸金属使用的镜像。

2. 构建部署镜像(ramfs和kernel)

2.1 构建

在构建时,可以内置一个devuser账号,方便部署阶段的问题排查; 构建完后上传到glance

$ cat ironic.rc
export DIB_DEV_USER_USERNAME=fhl
export DIB_DEV_USER_PASSWORD=fhl
export DIB_DEV_USER_PWDLESS_SUDO=YES
$ . ironic.rc
$ disk-image-create ironic-agent centos7 -o ironic-agent devuser

build结束后在当前目录下会生成ironic-agent.kernel 和 ironic-agent.initramfs两个文件

2.2 上传到Glance里

# glance image-create --name ironic-agent.kernel --visibility public --disk-format aki --container-format aki < ironic-agent.kernel
# glance image-create --name ironic-agent.initramfs --visibility public --disk-format ari --container-format ari < ironic-agent.initramfs

2.3 更新baremetal node里的deploy_kernel和deploy_ramdisk

# openstack baremetal node set 0fd688c2-ca83-416e-96a6-a61d231881d7 \
    --driver-info deploy_kernel=326020f0-bc8c-4a3c-a3af-725bce3c04ef \
    --driver-info deploy_ramdisk=3dc9a9b2-091b-441c-934a-41f250a32388

3. 构建系统镜像

https://cloud.centos.org/centos/7/images/下载来的CentOS-7-x86_64-GenericCloud.qcow2镜像直接来装裸机,发现镜像不能dhcp所有接口;如果裸机使用的网卡不在第一块,那么裸机不能dhcp到ip地址,cloud-init也就不能成功的初始化,导致账号注入失败,登入不进去。因此,使用diskimage-builder重新构建系统镜像。

3.1 可以将基础镜像下载到本地

wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz
export DIB_LOCAL_IMAGE=/root/CentOS-7-x86_64-GenericCloud.qcow2.xz

3.2 构建bios引导的系统镜像

$ disk-image-create centos7 vm dhcp-all-interfaces grub2 -o centos7-whole-grub2

3.3 构建uefi引导启动的系统镜像

$ disk-image-create centos7 vm dhcp-all-interfaces block-device-efi grub2 -o centos7-efi-grub2

3.4 系统镜像上传到glance

# openstack image create "centos7-bm" \
--file centos7-whole-grub2.qcow2 \
--disk-format qcow2 --container-format bare \
--public --min-disk 50 \
--property os_distro=centos \
--property os_type=linux

4. 创建裸机

# . demo.rc
# openstack server create --flavor baremetal-flavor --image 695ca8e2-5952-451d-a23c-6e76e4e90f7
上一篇:为什么要把InputStreamReader包在BufferedReader里面


下一篇:Linux DRBD 主节点(Primary) 故障恢复测试