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

时间:2022-08-24 20:54:45

这是 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)