且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

更新时间:2022-02-19 12:47:58

这是 OpenStack 实施经验分享系列的第 2 篇。


OpenStack 通过 Glance 镜像部署 instance,上一节我们介绍了 linux 镜像制作方法,windows 镜像与 linux 有很大不同,今天我们以 windows2008 为例详细讨论。


镜像制作步骤如下:
1. 创建并运行 windows2008 KVM 虚拟机
2. 安装 virtio 驱动
3. 安装 cloudbase-init
4. 其他定制工作
5. 创建 Glance 镜像
6. 通过镜像部署新 instance

1. 创建并运行Windows2008 KVM虚拟机

如果有 virt-manager,这一步可以在图形界面中完成。考虑到不是所有情况都有 virt-manager,我们这里直接在 KVM 宿主机上操作。下面的步骤用于创建 windows2008 虚拟机。


首先创建一块 20G 的虚拟磁盘作为虚拟机的启动盘:


qemu-img create -f qcow2 /var/lib/libvirt/images/win2008r2sp1.qcow2 20G

                                              制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

copy 虚拟机模板


cp template.xml win2008r2sp1.xml

 
template.xml 这个模板怎么来?其实很简单,通常直接 dump 现有 kvm 虚拟机的 xml 定义就可以了。比如:


virsh dumpxml [vm-id]  > template.xml


修改win2008r2sp1.xml中以下各项:


虚拟机名称


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

 

虚拟磁盘(前面通过 qemu-img 创建的)和启动ISO


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

 

创建虚拟机


virsh define win2008r2sp1.xml



制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

 

启动虚拟机


virsh start win2008r2sp1


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

 

通过vnc连接虚拟机


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


这里 172.17.12.11 为宿主机 IP,端口号为 2(可通过 virsh vncdisplay 查询到)。连接成功后,显示虚拟机安装界面


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

通过向导安装操作系统,过程不再赘述。如果在安装过程中虚拟机没有自动重启,可以通过下面的命令启动虚拟机


virsh start win2008r2sp1


安装成功后,设置 IP 地址


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

2. 安装 virtio 驱动

OpenStack 默认使用 virtio 磁盘和网卡,virtio 的性能很好。由于 windows 没有自带 virtio 的驱动,需要手动安装,步骤如下:


添加一个 virtio 类型的磁盘。


virsh edit win2008r2sp1


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


修改当前的网卡设备为 virtio。


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


重启操作系统,安装 virtio 的驱动程序。


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)




制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


virtio driver 的下载地址为 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

3. 安装 cloudbase-init

cloudbase-init 使 windows 镜像部署的 instance 能够自动配置 IP 地址等个性化信息。其作用与 linux 的 cloud-init 一样,下面演示 cloudbase-init 的配置方法。

 

下载 cloudbase-init


https://cloudbase.it/cloudbase-init/#download

 

在虚拟机中安装 cloudbase-init


可通过远程桌面上传 cloudbase-init 安装程序并安装


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


系统会自动关机。

4. 其他定制工作

重新启动虚拟机,完成其他定制工作,比如根据需要安装一些常用软件等。至此,windows 镜像文件已经准备好,文件路径为


/var/lib/libvirt/images/win2008r2sp1.qcow2

5. 创建 Glance 镜像

镜像创建方法与上一节 linux 镜像一样


glance image-create --name "Windows 2008 R2 SP1" --file /var/lib/libvirt/images/win2008r2sp1.qcow2 --disk-format qcow2 --container-format bare --is-public true --progress 


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

6. 通过镜像部署新 instance

制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

 

点击镜像后面的“启动云主机”按钮。


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


给 instance 命名,并点击“运行”,instance 创建成功并分配到 IP。

 

制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

 

点击 instance 名字。

制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

 
打开 console。


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

在 VNC 控制台可以看到 instance 正常启动。


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


点击 Administrator 用户


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


第一次登录需要修改密码。


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)


以上就是定制 OpenStack Windows 镜像的操作,下一节讨论几个镜像使用上的经验和技巧。


制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)