要在Openstack中创建虚拟机,必须使用虚拟机镜像。

对于普通用户,可以使用已经创建好的虚拟机镜像。一般是操作系统官方构建并提供的。

某些用户可以有自己独特的需求,需要定制特别的虚拟机镜像。

这时候主要涉及镜像更改/镜像格式转化/镜像创建。

用户可以参照openstack官方文档。

镜像更改

镜像格式更改,有多种工具和方法。

* guestfs提供的guestfish和guestmount。

guestfish比较有意思,guestfish会启动一个虚拟机,然后通过串口与虚拟机内进行通信。我们可以基于此,对虚拟机内进行修改。

* virt-*工具。

* loop回环设备的方式,修改镜像内容。

镜像格式转换

一般是使用qemu-img进行转换。 virtualBox有一个转换为Raw的工具。

镜像创建

一般有两种方式。

手工构建,方法上来说比较简单,但是过程比较繁琐。适合开发者,或者小规模情况下使用。

自动构建,openstack官方文档也提供了一些构建工具和方法。

自动构建工具目前有很多,主要有diskimage-builder,Oz,VMBuilder,VeeWee,Packer,ImageFactory,SUSE Studio。

其中,diskimage-builder是openstack中TripleO的子项目,在各个工具中功能相对完善,支持主要的Linux操作系统(fedora/centos/redhat/ubuntu/debian)

)的镜像制作。

diskimage-builder的安装比较简单,直接clone代码,设置环境变量即可运行。

# disk-image-create ubuntu vm

diskimage-builder支持定制element,即镜像中包含的元素。(比如创建用户,安装软件包,进行某种配置) 用户可以根据需要进行定义,然后再使用disk-image-create时指定。具体参考diskimage-builder指导。

diskimage-builder的原理也比较简单,是在主机上创建虚拟机镜像,然后通过挂载/chroot方式,通过kickstart自动完成镜像内容的安装。

elements比较像程序中的接口/插件机制,将element中规定目录下的定制脚本执行,完成对镜像的定制。

整个过程并不需要启动虚拟机。

上边工具主要是Linux镜像的制作,并不支持windows镜像的自动制作。

我也搜索了下,windows镜像自动制作也是可能的,但是并不清楚,目前为什么没有集成进去。可能是创建过程差异略大。Windows镜像的创建, 一般需要创建虚拟机,通过应答文件完成OS的自动安装。应答文件一般放在软盘中,需要创建一个虚拟软盘文件。

参考:

https://cloudbase.it/create-windows-openstack-images/

长按指纹即可关注哦!每天都会为你推荐有趣有用的资料!喜欢就分享给更多人吧!

相关推荐