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

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

                                              

copy 虚拟机模板


cp template.xml win2008r2sp1.xml

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

virsh dumpxml [vm-id]  > template.xml

修改win2008r2sp1.xml中以下各项:

虚拟机名称

 

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

 

创建虚拟机

virsh define win2008r2sp1.xml

 

启动虚拟机

virsh start win2008r2sp1

 

通过vnc连接虚拟机


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

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

virsh start win2008r2sp1

安装成功后,设置 IP 地址

2. 安装 virtio 驱动

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

添加一个 virtio 类型的磁盘。

virsh edit win2008r2sp1

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

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

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

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 安装程序并安装

系统会自动关机。

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 

6. 通过镜像部署新 instance

 

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

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

 

 

点击 instance 名字。

 
打开 console。

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

点击 Administrator 用户

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

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

时间: 2024-07-30 10:44:00

制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)的相关文章

制作 OpenStack Linux 镜像 - 每天5分钟玩转 OpenStack(151)

这是 OpenStack 实施经验分享系列的第 1 篇.   OpenStack 的 instance 是通过 Glance 镜像部署的,所以准备镜像是必须要做的工作.本节介绍 Linux 镜像的制作方法,后面还会讨论 Windows 镜像. 下载clould 镜像 最简单的方法是使用标准镜像.主流的Linux发行版都提供可以在 OpenStack 中直接使用的cloud镜像,下载地址: CentOS6:http://cloud.centos.org/centos/6/images/ CentO

学习 OpenStack 的方法论 - 每天5分钟玩转 OpenStack(150)

作为 OpenStack 的核心教程,我们已经到了最后总结的部分. OpenStack 目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder 和 Neutron.请大家看下图: 此图截自 https://www.openstack.org/software/project-navigator/,这是 OpenStack 官方定义的 6 个 Core Service.每个模块都会从三个维度来衡量: ADOPTION - 采用度 MATUR

如何更新 OpenStack 组件?- 每天5分钟玩转 OpenStack(161)

这是 OpenStack 实施经验分享系列的第 11 篇. 本节教大家更新 OpenStack 组件的方法.请注意,是更新(Update)而不是升级(Upgrade).更新是给组件打补丁,版本不变:而升级是刷新版本,比如从 kilo 升级到 liberty.   更新真的有必要吗?   对于已经部署好的 OpenStack,我们有更新某个组件的需求吗? 答案是:有! OpenStack 是软件,是软件就会有 bug. OpenStack 包含了很多组件,结构很松散,每个组件可以单独更新,只要保证

搭建 OpenStack 实验环境 - 每天5分钟玩转 OpenStack(16)

在学习 OpenStack 各服务之前,让我们先搭建起一个实验环境. 毋庸置疑,一个看得到摸得着而且允许我们随便折腾的 OpenStack 能够提高我们的学习效率. 因为是我们自己学习用的实验环境,CloudMan 推荐使用 DevStackhttp://docs.openstack.org/developer/devstack/DevStack 丰富的选项让我们能够灵活地选取和部署想要的 OpenStack 服务,非常适合学习和研究. 部署拓扑 首先我们来设计 OpenStack 的部署拓扑.

写在最前面 - 每天5分钟玩转 OpenStack(1)

<每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节逐一讨论 重实践并兼顾理论 主要从实际操作的角度带着大家学习 OpenStack.   为啥要写这个? 简单回答是:因为OpenStack 学习难度大,但如果掌握了价值会很大 先做一个自我介绍吧. 本人网名CloudMan,在 IT 这个行当已经摸爬滚打了十多年,05年之前是搞上层应用开发的,那时候 Java 比较火,所

解决 Windows instance 时间不同步问题 - 每天5分钟玩转 OpenStack(153)

  这是 OpenStack 实施经验分享系列的第 3 篇. 问题描述 通过上一节部署出来的 Windows instance 有时候会发现操作系统时间总是慢 8 个小时,即使手工调整好时间和时区,下次 instance 重启后又会差 8 个小时. 原因 KVM 对 Linux 和 Windows 虚拟机在系统时间上处理有所不同,Windows 需要额外一些设置. 解决办法一 给 Windows 镜像添加 os_type 属性. glance image-update --property os

cloud-init 典型应用 - 每天5分钟玩转 OpenStack(174)

本节介绍几个 cloud-init 的典型应用:设置 hostanme,设置用户初始密码,安装软件.  设置 hostname cloud-init 默认会将 instance 的名字设置为 hostname.但这样不太方便,有时希望能够将二者分开,可利用 cloud-init 的set_hostname 模块实现.set_hostname 它会查询 metadata 中 hostname 信息,默认值就是 instance 的名字.我们可以指定自己的 hostname,方法是将下面的内容传给

cloudbase-init 自动扩盘的副作用 - 每天5分钟玩转 OpenStack(154)

  这是 OpenStack 实施经验分享系列的第 4 篇. cloudbase-init 的一项功能是自动扩展 windows 的 C 盘.比如 windows 镜像是 20G,在部署 instance 时选择的 flavor 磁盘定义是 40G,那么 instance 部署时 cloudbase-init 会自动将 C 盘扩到 40G. cloudbase-init 自动扩盘这个操作是我们需要的,但它有个副作用. 在 windows 中,我们可以将硬盘划分成多个逻辑盘 C:,D: 等,比如对

Launch和Shut Off操作详解 - 每天5分钟玩转 OpenStack(30)

本节详细分析 instance launch 和 shut off 操作,以及如何在日志中快速定位有用信息的技巧. Launch Launch instance 应该算 Nova 最重要的操作. 仔细研究 lanuch 操作能够帮助我们充分理解 Nova 各个子服务的协调配合和运行机制. 前面我们已经以 launch 操作为例详细讨论了各个 nova-* 子服务. 这里不再赘述,只是再回顾一下流程. 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送