Mar 162021
 

OpenStack 提供一个非常好用的工具 DiskImageBuilder, 简称DIB。那么这个工具其实做的还是非常不错。现在很多厂商都是用他来做自己应用都镜像,方便用户使用。

CentOS 官方提供镜像,我们可以基于这种镜像进行构建。把所有的改动都记录下来。我需要对镜像的定制

  • 关闭Selinux
  • 更新yum源
  • qemu guest agent
  • vi alias vim
  • cloud init
  • 更改默认的用户名和密码,root,pass。以前是centos,centos

外面的文章,你会发现根本都没法照做,而且好像都是互相抄。这次我折腾来1天,实在搞不定,找Jeffrey Zhang 指导一下,实在是太简单。

第一个CentOS镜像

今天是青云都上市日子,我也用青云的虚拟机来完成这个实验。

创建一个CentOS 7.8的虚拟机,2core,4G内存,就可以开始测试。

yum install centos-release-openstack-train
yum install diskimage-builder

不需要安装EPEL,也不需要安装什么qemu-image,默认都给你搞定。就运行上面都两条命令就可以。

disk-image-create -a amd64 -o centos7.qcow2 vm base centos7

这条命令就是帮助你创建一个CentOS 7的镜像。应该是最新的版本7.9

disk-image-create -h

基本可以看到参数的含义

从Centos 官方 https://cloud.centos.org/centos/ 下载base镜像,

  • -a 表示镜像的架构,如果是做arm,就是arm64
  • -t 虚拟机镜像格式,默认是qcow2,不指定就是qcow2,你可以设置raw
  • -o 这其实是镜像输出位置和名字,如果没指定,就这当前目录,生成 (image.qcow2 镜像)

vm base centos7 都是element,这些都是Disk image builder 默认自带的。

你可以猜到,如果是ubuntu到镜像。

DIB_RELEASE=bionic disk-image-create  -o ubuntu-18.04.qcow2 vm ubuntu

原理

尝试几次,你就大概明白原理。

cd /usr/share/diskimage-builder/elements/

所有的定制化,基本就是定制elements,内置很多elements,你可以参考修改,就应该够用来。

如果你不想了解原理,那么就看我怎么操作就可以。

关闭Selinux

disk-image-create -a amd64 -o centos7.qcow2 vm base centos7 disable-selinux 

cloud init

DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack"  disk-image-create -a amd64 -o centos7.qcow2  vm base centos7 disable-selinux cloud-init cloud-init-datasources

修改默认的用户和密码

export DIB_DEV_USER_USERNAME=root
export DIB_DEV_USER_PASSWORD=pass
export DIB_DEV_USER_PWDLESS_SUDO=YES
export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack"
disk-image-create -a amd64 -o centos7.qcow2 cloud-init cloud-init-datasources vm base centos7 disable-selinux devuser 

参考文章

  • https://blog.dustinrue.com/2019/04/getting-started-with-diskimage-builder/
  • https://support.hpe.com/hpesc/public/docDisplay?docId=c04223454&docLocale=en_US
  • https://docs.mellanox.com/pages/releaseview.action?pageId=39259372

 Leave a Reply

(required)

(required)

This site uses Akismet to reduce spam. Learn how your comment data is processed.